我有一台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位交叉编译。
如果可以快速轻松地解决上述错误,请告诉我。
谢谢
Abhinav。
最佳答案
好吧,让我回答我自己的问题。或者至少分享最终对我有用的东西。
背景
使用上述选项在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位)。可执行文件随后顺利运行。
关于compiler-errors - 在64位计算机上编译静态32位Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325885/