Qt程序发行Linux版,软件打包知识

patchelf 工具能够修改已编译运行程序的依赖库位置和指定库连接器html

patchelf --set-rpathlinux

patchelf --set-interpretergit

经过这个工具 https://github.com/probonopd/linuxdeployqt 若是本身编译不了,也能够下载现成的github

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

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

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

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

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

patchelf能够经过  sudo apt install patchelf 安装htm

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.二、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,不须要运行两边了

 

参考资料:

ELF文件的加载和动态连接过程

http://jzhihui.iteye.com/blog/1447570

http://nixos.org/patchelf.html
https://my.oschina.net/eechen/blog/371643

相关文章
相关标签/搜索