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