主要参考这篇文章 http://www.cnblogs.com/oloroso/p/6149000.html 感谢!
本程序开始准备静态编译,但由于包含qwebengine,只能动态编译。
动态编译就要带很多相关库。。。
一般会出现 XCB错误 这是库没找到 或者WebEngineProcess 没找到
后来发现 -rpath 可以指定程序运行时库路径,简直太棒了。
1.修改pro文件
QMAKE_LFLAGS += -Wl,-O1 -Wl,-rpath /opt/runexe/lib (自定义路径)
2.qmake生成makefile
3.发现makefile中LFLAGS = -Wl,-O1 -Wl,-rpath /opt/runexe/lib -Wl,-O1 -Wl,-rpath,/opt/Qt5.9.1/5.9.1/gcc_64/lib -Wl,-rpath-link,/opt/Qt5.9.1/5.9.1/gcc_64/lib
还有一段自动添加默认的rpath,手动去掉,暂时还没解决掉,不知道怎么加上去的默认路径。-rpath-link 上面那篇文章说了,编译时需要的链接库,如果有可以自己重新指定。
4.make ……等待
5.将qt安装路径 /Qt5.9.1/5.9.1/gcc_64/ 下大部分打包出来 lib中删除la prl 节省空间。还想再节省可以将lib中只保留需要的库。
6.重点部分 在程序运行路径下 创建qt.conf 文件,内容:
[Paths] Prefix=/opt/runexe (库路径 可以自定义指定)
7.重点部分 如果需要qwebengine 运行时会需要QtWebEngineProcess 一般会提示找不到QtWebEngineProcess,这个文件在libexec中 所以这个也要有
解决办法:
在libexec中创建qt.conf 内容:
[Paths] Prefix=..8.
去运行 应该就没有问题了。
2017.12.23 更新
最近重新打包 发现之前的办法有点问题,今天重新整理一下思路,通用打包使用
1.QMAKE_LFLAGS += -Wl,-O1 -Wl,-rpath /opt/lib (自定义路径) 配置编译及运行时路径2.编译3.将依赖库拷贝到1中配置好的路径下。4.在可执行程序相同路径添加qt.conf文件[Paths] Prefix=/opt/lib(自定义)5.将qt安装路径下的plugins拷贝到/opt/lib/下6.重点:将qt lib下的 libQt5DBus.so* libQt5DBus.so.* 拷贝到/usr/lib/x86_64-linux-gnu下 因为plugins下的platforms/libqxcb.so依赖这些库
现在就基本OK了,可执行程序下只有qt.conf 清爽