compiler-errors - 在64位计算机上编译静态32位Qt

标签 compiler-errors qt5 ubuntu-16.04

我有一台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
    依次调用makemake 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/

    相关文章:

    ubuntu - Ubuntu 上的 Tomcat8 .log.gz 已经存在未被覆盖

    qt - 停用 (?) QML 项目以避免操作区域重叠

    java - 使用 javac 的错误类文件

    objective-c - 编译器错误 : "initializer element is not a compile-time constant"

    compiler-errors - 使用 OpenModelica v1.14.1(64 位)编译简单的 Modelica 代码时出现多个未声明的标识符错误

    android - 在Qt中编译项目时出现错误

    c++ - 有没有办法将两个 QWidget 连接或锚定在一起?

    iis - Haproxy 粘性 session

    c# - 如何从 Linux 上运行的 .NET Core 应用程序关闭计算机

    c# - 返回具有不同泛型类型的泛型接口(interface)实现