2017-07-26 539 views
0

我有一個64位的Ubuntu機器。我已經成功地管理使用下面的配置選項在64位機器上編譯靜態32位Qt

-static 
-release 
-prefix /opt/Qt-5.8.1 
-confirm-license 
-nomake examples 
-nomake tests 
-opensource 
-qt-xcb 
-no-sql-psql 
-skip qt3d 
-fontconfig 

配置和編譯QT5 靜態庫現在,我想創建一個32位的靜態Qt的構建。所以,我在配置時添加了一個額外的-xplatform linux-g++-32選項。

但是,我得到了以下兩個(無關?)錯誤

ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed.

ERROR: The OpenGL functionality tests failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2], QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.

我想我在這裏失蹤的小東西 - 像失蹤的32位開發庫。但是我不知道我應該在64位機器上安裝什麼來啓用32位交叉編譯。

如果上述錯誤有一個快速和簡單的解決方法,那麼請讓我知道。

謝謝 Abhinav。

+0

交叉編譯Qt是一種噩夢。我建議在一個實際的32位系統上做(我使用VMware來運行一個32位的Linux發行版)。 –

回答

0

好的,讓我回答我自己的問題。或者至少分享最終爲我工作的東西。

背景

已經通過上述方式成功地建立了Qt的5一個Ubuntu 16.04 64位計算機上,然後成功創建64位靜態鏈接執行我的項目,我現在看在32位中執行相同的操作。

問題

無法關閉上一組正確的配置選項和構建環境設置爲32位

  1. sudo apt-get install libfreetype6:i386
  2. sudo apt-get install libfreetype6-dev:i386

然後在爲Qt調用./configure時更改以下選項。

-prefix (path-to-Qt32bit) -platform linux-g++-32 -I/usr/include/freetype2 -L/usr/lib/i386-linux-gnu

呼叫make然後make install。 現在,你將擁有(在64位機器上)的Qt的32位編譯

疑難雜症

儘管做上述,我的項目產生的32位可執行文件將不會運行在一臺32位機器上。

我認爲這是我Qt版本的問題。

但事實證明,我正在Ubuntu-12.04機器上運行可執行文件。而在12.04發貨的libfreetype沒有一些方法,如FT_Property_Set。因此,我看到運行時錯誤undefined symbol

因此,即使可執行文件被編譯,它也無法運行。 我的解決方案是安裝Ubuntu 16.04(32位)。然後可執行文件順利運行。

相關問題