我有一台64位的Ubuntu机器。我已成功设法使用以下配置选项配置和编译Qt5静态库
-static
-release
-prefix /opt/Qt-5.8.1
-confirm-license
-nomake examples
-nomake tests
-opensource
-qt-xcb
-no-sql-psql
-skip qt3d
-fontconfig
现在,我想创建一个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位交叉编译。
如果对上述错误有快速简便的解决方法,请告诉我。
谢谢阿比纳夫。
好的,让我回答一下我自己的问题。或者至少分享最终对我有用的东西。
背景
使用上述选项在Ubuntu 16.04 64位机器上成功构建了Qt-5,然后为我的项目成功创建了64位静态链接可执行文件,我现在希望以32位执行相同操作。
问题
无法关闭正确的配置选项集并构建32位的环境设置
解
sudo apt-get install libfreetype6:i386
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
。现在,你将拥有一个32位的Qt版本(在64位机器上)
疑难杂症
尽管如此,生成的项目的32位可执行文件不能在32位计算机上运行。
我认为这是我的Qt构建的一个问题。
但结果是我在Ubuntu-12.04机器上运行可执行文件。并且在12.04发货的libfreetype
没有像FT_Property_Set
这样的方法。因此,我看到运行时undefined symbol
错误。
因此,即使可执行文件已编译,也无法运行。我的解决方案是安装Ubuntu 16.04(32位)。然后可执行文件顺利运行。