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,不须要运行两边了
参考资料:
http://jzhihui.iteye.com/blog/1447570
http://nixos.org/patchelf.html
https://my.oschina.net/eechen/blog/371643