2013-03-11 81 views
12

我在Linux環境中使用基於Qt 5.0.1的Qt Creator 2.6.2。該應用程序正常工作的電腦上,我做編輯,但是當我執行它在另一臺計算機上我喜歡的錯誤:如何靜態構建Qt 5

error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory 
error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory 

我找到了一些解決方案,在這個link(一些鏈接都死了)。

所以我加入到我的.pro文件中這一行:

CONFIG += static 

要靜態編譯我的項目。

我以爲我會得到的文件會更大,但我得到相同的大小和相同的錯誤。

謝謝。

+3

您需要構建一個靜態Qt構建以靜態編譯一個項目。 – dtech 2013-03-11 14:26:27

+3

並記住許可問題。 – cubuspl42 2013-03-11 14:38:49

+1

抓取源代碼,並使用'''./configure -static -release'''構建。 – 2013-04-01 18:27:34

回答

9

Qt共享庫不存在於您測試它的另一臺計算機上。因此,您需要:

  1. 將共享庫複製到其他機器。或者...
  2. 創建一個靜態的Qt版本來連接你的應用程序。

僅將CONFIG += static添加到.pro文件中是不夠的,您還需要Qt靜態庫。所以要做#2你需要獲得Qt源代碼並自己構建它。

此外,Qt是根據LGPL授權的,因此您需要在靜態鏈接時注意這一點。有些人認爲LGPL不允許靜態鏈接(除非你LGPL自己的代碼)和其他人相信它(只要你願意爲你的應用程序發佈目標代碼)。但是這是另外一個討論。

+4

無論「有些人相信」,根據LGPL條款的規定,您可以自己閱讀[這裏]( http://www.gnu.org/licenses/lgpl.html),只要您提供讓最終用戶隨意重新鏈接的方法,就可以靜態鏈接。第4節(d)(0)在這一點上是明確的。 – JBentley 2014-01-22 04:06:33

+0

@JBentley對不起,我已經完全同意你的意見了,但我遇到過的其他人卻不相信,不管這些許可證的內容如何。 – Cutterpillow 2014-08-02 00:54:21