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

相關文章
相關標籤/搜索