2017-07-26 535 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位)。然后可执行文件顺利运行。

相关问题