美文网首页
linux下QT打包程序遇到的问题及解决办法!

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

作者: tsslisimin | 来源:发表于2019-05-09 18:15 被阅读0次
    • 方法一(原生态打包):

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

      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即可。

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

    linuxdeployqt--工具下载地址
    教程地址


    重点!!

    • 无论使用第一种方式 还是第二种方式,在执行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去就行了。
    • 如果对你有帮助 麻烦点个赞吧

    相关文章

      网友评论

          本文标题:linux下QT打包程序遇到的问题及解决办法!

          本文链接:https://www.haomeiwen.com/subject/zurgoqtx.html