2016-07-05 135 views
1

這可能是一個noob問題,但我一直在試圖解決如何在Linux上靜態構建我的qt項目。我嘗試着在http://doc.qt.io/qt-5/linux-deployment.html上做什麼,但我不明白第一步。當我cd到我的qt項目的位置並運行 在Linux上部署Qt項目

cd /path/to/Qt 
./configure -static -prefix /path/to/Qt <otherparameters> 
make
它說沒有這樣的文件或目錄。我誤解我需要使用什麼路徑?我想讓我的qt項目成爲一個獨立的可執行文件,它不需要使用qt的計算機。我已閱讀關於動態鏈接庫,但我真的不知道該怎麼做。部署選項在qtcreator中灰顯,有沒有辦法使用它? 謝謝

+0

你在這裏要做的是建立你自己的Qt副本(如你應該,順便說一句)。但'/ path/to/Qt'確實是'/ path/to/Qt Sources'!所以確保你已經下載了源代碼。 –

回答

0

/path/to/Qt應該是Qt的來源,而不是你的項目。文檔中的That section是關於靜態構建Qt的,在嘗試將應用程序靜態鏈接到Qt之前,您必須先完成這些工作。例如,如果您下載/克隆的源/home/jxb458/qt5,那麼你最好更換/path/to/Qt與:

cd /home/jxb458/qt5 
./configure -static -prefix /home/jxb458/qt5/qtbase 
make 
0

靜態鏈接是偉大的,當它的工作原理,但它可以是一個努力 - 我一直在使用的時候發現,特別是GUI。正如Mitch所說,你需要實際重新構建Qt源代碼

當我在這裏靜態構建一些代碼時,我做了一些註釋:Notes on static building(源自很多來源),他們應該至少指出你在正確的方向 - 你可能會忽略關於安裝Ubuntu的部分 - 這些註釋假定有一個新的安裝。

但是我最近回到了動態鏈接部署,因爲我覺得這是一種更好的部署方式。您不需要在目標機器上安裝Qt,只需收集qt dll並將它們複製到應用程序中(使用ldd executable-name即可生成您需要的dll列表 - 但只需要Qt的列表,而不是系統/通用的列表) )。對於插件,你需要做更多的事情(但相當簡單)。我甚至寫了一個bash腳本來自動執行此操作(如果需要,我會將它發送給您),在Windows中有一個名爲windeployqt的qt腳本(不知道爲什麼沒有linux變體)。

如果我在哪裏再次開始尋找部署,我會去動態鏈接。也許嘗試一個簡單的項目開始(如hello world proj)。