Ubuntu下Qt5.4.1項目,在Qt Creator下能正常編譯和運行, shell
可是準備打包發佈的時候,雙擊無反應, ./執行出現以下錯誤, app
error while loading shared libraries: libxxx.so.1 spa
:cannot open shared object file debug
: No such file or directory code
按照提示,是說加載共享庫libxxx.so.1的時候出現異常,lixxx是我在Qt裏內建的共享庫, 編譯
查看debug/release目錄,都有對應的文件生成,爲何仍是找不到,奇了怪了。 class
首先,查看應用程序執行的時候,到底加載了哪些動態庫,缺失了哪些動態庫 變量
ldd appName #appName=你的Qt應用程序的名字
會出現該應用程序加載的各種動態庫的基本狀態,圖示: 打包
這個裏面我這隻有這個not found,可能你那會有更多, object
好了,問題稍微明瞭了一點,
那麼接下來的要作的,就是怎麼讓not found變成能找到
首先,補充一點,Qt默認檢索的動態庫路徑是/usr/lib和/lib,在上圖中基本能夠看到點痕跡,
那麼把如今debug/relese裏生成的動態庫,拷貝到上面的/usr/lib下,
而後從新執行ldd查看,或者直接啓動應用程序便可,
上面的方法勉強算解決了當前的問題了,可是立刻涉及到的問題是:
Qt子項類庫比較多的時候,發佈出去的時候,去上面的方式明顯不合理,
因而乎,就有了更理想那麼一丟丟的辦法:
每一個子庫的.pro文件添加DESTDIR = bin,這裏的bin隨便定義,
保證全部的動態庫生成後都在同一個目錄下便可,手動拖也行。
而後把整個bin路徑裏全部動態庫,拷貝到/usr/lib目錄下便可。
export LD_LIBRARY_PATH = ~/bin #這裏的~/bin是你的動態庫所在目錄 #查看當前動態庫環境變量 echo $LD_LIBRARY_PATH #有輸出,說明是正常的而後發現,
1.鼠標雙擊仍是點不開應用程序;
2.可是經過./命令能夠打開應用程序;
3.系統註銷或重啓後,失效
設置shell腳本,並添加到啓動項,能夠解決3的問題,
可是隻能經過Terminal執行,不理想
這裏由於不適用程序要求,就很少說,
幾種方式對我個Qt小咋咋來講,都比較不實用,沒找到理想的解決辦法,
可是其中對Qt編譯項的理解和應用,
以及對Ubuntu的熟悉程度慢慢加深中...