Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good相关的知识,希望对你有一定的参考价值。

patchelf 工具可以修改已编译运行程序的依赖库位置和指定库链接器

patchelf --set-rpath

patchelf --set-interpreter

通过这个工具 https://github.com/probonopd/linuxdeployqt 如果自己编译不了,也可以下载现成的

 https://github.com/probonopd/linuxdeployqt/releases

运行 ./linuxdeployqt-2-x86_64.AppImage ShanbayDict  并为成功,生成的 lib目录下的so文件很少。

运行 ./linuxdeployqt-2-x86_64.AppImage ShanbayDict -appimage   也未成功,但lib生成了很多so文件

使用 patchelf --set-rpath /opt/Qt-5.7-static/lib/:./lib ShanbayDict 修改 rpath后,ShanbayDict可以独立运行了,连同lib一起拷贝到新安装的Ubuntu 16.04系统中,也能运行了。

ldd ShanbayDict 显示,rpath已经指向 ./lib目录

patchelf可以通过  sudo apt install patchelf 安装

2017年2月24日

Qt 5.8编译的Qt程序

设置环境变量,确认 qmake -v  是自己使用的Qt版本,如果不是,解决办法是:

export PATH=/home/lieefu/Qt5.8.0/5.8/gcc_64/bin:$PATH

创建qml目录,把/home/lieefu/Qt5.8.0/5.8/gcc_64/qml 目录下用到的模块复制过来,我的app用到了三个 QtQuick、QtQuick.2、QtMultimedia。

增加plugin中platforminputcontexts 包括libfcitxplatforminputcontextplugin.so文件,就可以使用搜狗输入法录入汉字了

./linuxdeployqt-continuous-x86_64.AppImage LilyDict -appimage

这个命令要运行两边才行,解决这个bug https://github.com/probonopd/linuxdeployqt/issues/64

The libqxcb.so rpath hadn‘t been set correctly.
Running patchelf --set-rpath ‘$ORIGIN/../../lib‘ plugins/platforms/libqxcb.so

第二遍运行就对xcb库重新设置rpath

2017年3月2日,最新版本的linuxdeployqt-continuous-x86_64.AppImage,不需要运行两边了

 

https://my.oschina.net/lieefu/blog/756712

以上是关于Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good的主要内容,如果未能解决你的问题,请参考以下文章

跨发行版应用打包格式 Flatpak 发布

屏幕支持比较好的linux发行版么

查漏补缺:QT入门

软件测试工作中需要的Linux知识,一篇文章就够了

ubutun重新打包已安装的程序怎样操作

C++/Qt 发行版中的库链接