【发布时间】:2013-12-20 09:57:59
【问题描述】:
我想为 ARM 设备编译一个 Qt 程序。
我为 ARM 安装了工具链,我的 qmake.conf 文件如下所示:
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
QMAKE_CFLAGS += -O3 -march=armv5te
QMAKE_CXXFLAGS += -O3 -march=armv5te
QMAKE_INCDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include
QMAKE_INCDIR_QT = /usr/share/qt4/include
QMAKE_LIBDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_STRIP = arm-linux-gnueabi-strip
load(qt_config)
问题是如果我包含(如上图):
QMAKE_INCDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include
QMAKE_INCDIR_QT = /usr/share/qt4/include
QMAKE_LIBDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib
我收到一条错误消息:
main.cpp:1:30: fatal error: QtGui/QApplication: No such file or directory
如果我排除:
QMAKE_INCDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include
QMAKE_LIBDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib
我收到一条错误消息:
/usr/include/qt4/QtCore/qatomic_x86_64.h:133:29: error: impossible constraint in ‘asm’
我是新手,这周已经挣扎了 40 多个小时,找不到问题所在。
我可以为 ARM 设备编译一个简单的 c++ 程序,但是当我尝试使用 Qt 时,我得到了上述错误,所以我认为问题是在 1 种情况下未加载 Qt 标头,而在另一种情况下使用了错误的从 c++ 到 asm 的转换器文件。
【问题讨论】:
-
为什么不使用现有的规范? Qt 还没有支持某些特定的 ARM 吗?您是否在没有自定义 ARM 设置的情况下尝试过
qmake -spec linux-arm-gnueabi-g++? -
感谢您的回复。这没什么太花哨的,但我发现我应该这样做编译,所以我就是这样做的。
-
尝试放弃你的工作,并使用内置的 qmake mkspecs 支持。让我知道这次试验的结果。
-
上面粘贴的 qmake.conf 来自
qt4/mkspecs/qws/linux-arm-gnueabi-g++,我在其中添加了QMAKE_CFLAGS += -O3 -march=armv5te QMAKE_CXXFLAGS += -O3 -march=armv5te QMAKE_INCDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include QMAKE_INCDIR_QT = /usr/share/qt4/include QMAKE_LIBDIR_QT = /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib,因为我很困惑为什么要使用 x86_64 标头。如果我删除上面的行并让它像安装时一样,我会得到/usr/include/qt4/QtCore/qatomic_x86_64.h:133:29: error: impossible constraint in ‘asm’。 -
qws 不是我的建议。我是在建议非qws版本!请按照建议运行
qmake -spec linux-arm-gnueabi-g++。
标签: c++ qt arm cross-compiling