无法编译Qt程序以便在ARM设备上使用

时间:2013-12-20 09:58:00

标签: c++ qt arm cross-compiling

我想为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的错误的转换器文件。

2 个答案:

答案 0 :(得分:2)

只是阅读消息,qatomic_x86_64.h在ARM版本中相当可疑。这显然是错误的工具链。因此,您肯定需要第一个语句来选择ARM工具链。

但是,我不确定为什么修复遗漏包含的方法是删除更多包含目录。当错误显然在标题包含时,我也不明白为什么你假设Qt 缺失。

据我所知,唯一的问题是QtGui\是一个相对路径,在任何QMAKE_INCDIR_QT目录中都找不到。您的QtGui包含目录在哪里?

答案 1 :(得分:0)

我设法编译它,问题是我在安装Qt嵌入时使用了./configure的错误选项。从头开始,它没有问题。

使用的选项: ./configure -opensource -confirm-license -no-pch -embedded arm -platform qws/linux-x86_64-g++ -xplatform linux-arm-gnueabi-g++ -little-endian -no-webkit