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