• 141阅读
  • 6回复

[提问]求助:ubuntu 18.10上编译好的程序,打包到另外一台linux虚拟机上不能运行 [复制链接]

上一主题 下一主题
离线蓝色永恒
 

只看楼主 倒序阅读 楼主  发表于: 02-12

编译环境:虚拟机 ubuntu 18 桌面版  QT 5.12.3,  编译后的程序长时间运行没问题
打包移植用了两种方式:
1. Linuxdeployqt :   git克隆源代码下来,注释掉判断版本的几行,编译成功。 运行 LinuxDeployqt myapp -appimage , 能生成, 本机运行正常, 压缩打包拷贝到另外一台 虚拟机(ubuntu 16服务器版)上运行, 报 段错误(Segmentation fault )。
    这个方法是参照的这个网页:https://www.cnblogs.com/xl2432/p/11124415.html
2. 百度到自己找依赖库的方法  ldd myapp, 把缺失的so文件都找到,本机运行正常, 压缩打包拷贝到另外一台 虚拟机(ubuntu 16服务器版)上运行, 依然报段错误(Segmentation fault ),这个方法参照:https://www.jianshu.com/p/9df72f8b2004
真不知道问题出在哪里, 有大家帮帮忙。
离线fsu0413

只看该作者 1楼 发表于: 02-14
Linux下最好使用软件源提供的Qt进行编译,并使用软件源提供的方法进行打包
如果实在要做universal linux版本的话,用CentOS7
如果CentOS7也用不了的话,使用你认为可以使用的最老的Linux发行版

原因是如果你使用的版本太高很可能在编译时引入一些不能向前兼容的代码
CentOS7是2013年发布的,里面的软件版本都很老。
大多数软件都可以向后兼容,不能向前兼容,所以用CentOS7可能是最优解

离线圣域天子

只看该作者 2楼 发表于: 02-14
我一直是确保正式运行的linux和编译的linux是完全相同的版本。
所以这个问题几乎没有出现过。
离线蓝色永恒

只看该作者 3楼 发表于: 02-16
回 圣域天子 的帖子
圣域天子:我一直是确保正式运行的linux和编译的linux是完全相同的版本。
所以这个问题几乎没有出现过。 (2020-02-14 10:31) 

是个办法,值得一试,谢谢
离线fsu0413

只看该作者 4楼 发表于: 02-16
回 蓝色永恒 的帖子
蓝色永恒:是个办法,值得一试,谢谢 (2020-02-16 07:54) 

如果只是内部开发内部使用的话,没问题
如果要发布给外部使用的话呢?
离线圣域天子

只看该作者 5楼 发表于: 02-17
回 fsu0413 的帖子
fsu0413:如果只是内部开发内部使用的话,没问题
如果要发布给外部使用的话呢? (2020-02-16 09:51) 

那你最好在所有外部的版本上做一下测试,我以前也曾进行过这样的对比。
虽然费时费力,但是还是能找到原因和解决方案的
离线fsu0413

只看该作者 6楼 发表于: 02-17
回 圣域天子 的帖子
圣域天子:那你最好在所有外部的版本上做一下测试,我以前也曾进行过这样的对比。
虽然费时费力,但是还是能找到原因和解决方案的 (2020-02-17 10:20) 

但是问题是Linux发行版那么多,不可能每一个都测试的到
快速回复
限100 字节
 
上一个 下一个