linux qt程序崩溃_linux下QT打包程序遇到的问题及解决办法!

方法一(原生态打包):

首先已经生成了一个可执行文件,使用ldd exe可以找出对应的依赖库,exe表示所对应的可执行文件,确定好所有的依赖库都能找到。如果出现如下图所示,即表明对应的库未找到。

1ae15e2f655f

image.png

此时可以使用 sudo find / -name filename 找出该库所对应的位置,filename是未找到的文件名,然后再使用export LD_LIBRARY_PATH=filePath:$LD_LIBRARY_PATH 其中filePath表示该文件所对应的文件夹。之后再使用ldd exe | grep 'not found'检查一遍看是否还有not found的文件,

下一步需要把可执行程序所依赖的库打包出来。创建一个cplib.sh文件,代码如下:

exe="/xxx/exe"

des="/xxx/Lib"

deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')

cp $deplist $des

其中exe表示可执行文件的路径,des是要保存依赖库的路径。然后执行chmod +x cplib.sh并且执行./cplib.sh,执行完之后对应的文件所有依赖的库都copy到了des所对应的目录下了。

然后把对应的可执行文件和依赖库放在一个文件夹下面一起打包,并在该文件夹下编写一个start.sh,代码如下:

export LD_LIBRARY_PATH=$PWD/Lib:$LD_LIBRARY_PATH

./exe

其中exe表示可执行文件,Lib表示打包的依赖库所对应的文件夹。然后chmod +x start.sh即可。把以上的打包好发布在其他电脑上进入打包的目录 然后运行./start.sh即可。

方法二(第三方打包工具):

重点!!

无论使用第一种方式 还是第二种方式,在执行export LD_LIBRARY_PATH=$PWD/Lib:$LD_LIBRARY_PATH指令后都有会突然卡一下然后出现这样的错误[1]:

➜ MapHandleAPP export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH

➜ MapHandleAPP ls

[1] 13311 segmentation fault (core dumped) ls --color=tty

➜ MapHandleAPP

或者出现这样的错误[2]:

This application failed to start because it could not find or load the Qt platfo

rm plugin "xcb".

Available platform plugins are: kms, linuxfb, minimal, minimalegl, offscreen, xc

b.

第二种错误可以使用打包工具的方式解决。若出现第一种错误网上的原因比较少,这边的解决方案比较笨,就是先运行程序,缺少哪一个就加哪一个,一个一个加链接库,如果出现一下的错误:

boost_system*** /`GLIBCXX_3.4.xxx' not define

注意不是not found。此时,只要把之前打包好的链接库里面的libstdc++.so.6加到新的lib去就行了。

如果对你有帮助 麻烦点个赞吧

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值