在64位机器上编译静态32位Qt

问题描述 投票:0回答:1

我有一台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位交叉编译。

如果对上述错误有快速简便的解决方法,请告诉我。

谢谢阿比纳夫。

compiler-errors qt5 ubuntu-16.04
1个回答
0
投票

好的,让我回答一下我自己的问题。或者至少分享最终对我有用的东西。

背景

使用上述选项在Ubuntu 16.04 64位机器上成功构建了Qt-5,然后为我的项目成功创建了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。现在,你将拥有一个32位的Qt版本(在64位机器上)

疑难杂症

尽管如此,生成的项目的32位可执行文件不能在32位计算机上运行。

我认为这是我的Qt构建的一个问题。

但结果是我在Ubuntu-12.04机器上运行可执行文件。并且在12.04发货的libfreetype没有像FT_Property_Set这样的方法。因此,我看到运行时undefined symbol错误。

因此,即使可执行文件已编译,也无法运行。我的解决方案是安装Ubuntu 16.04(32位)。然后可执行文件顺利运行。

© www.soinside.com 2019 - 2024. All rights reserved.