我正在尝试使用安装在/ home / user / Software的angstrom工具链来编译qt 4.7.4 for beagle board。
我收到的错误是:
/corelib/arch/qatomic_arm.h:131:错误:没有这样的指令:`swpb%al,%dl,[%esi]'
我的qmake.conf文件如下:
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-angstrom-linux-gnueabi-gcc
QMAKE_CXX = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-angstrom-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-angstrom-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-angstrom-linux-gnueabi-objcopy
QMAKE_STRIP = arm-angstrom-linux-gnueabi-strip
QMAKE_LIBDIR_QT = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/${libdir}
QMAKE_MOC = /usr/local/angstrom/arm/bin/moc4
QMAKE_UIC = /usr/local/angstrom/arm/bin/uic4
QMAKE_UIC3 = /usr/local/angstrom/arm/bin/uic34
QMAKE_RCC = /usr/local/angstrom/arm/bin/rcc4
QMAKE_QDBUSCPP2XML = /usr/local/angstrom/arm/bin/qdbuscpp2xml4
QMAKE_QDBUSXML2CPP = /usr/local/angstrom/arm/bin/qdbusxml2cpp4
QMAKE_INCDIR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/include
QMAKE_LIBDIR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/lib
QMAKE_INCDIR_X11 = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/include
QMAKE_LIBDIR_X11 = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/lib
QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/include
QMAKE_LIBDIR_OPENGL = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/lib
QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
load(qt_config)
我的配置命令在
之下./configure -embedded arm -prefix /home/thwijeth/Software/qt-4.7.4-embedded -xplatform qws/linux-arm-gnueabi-g++ -fast -little-endian -opensource
有人能弄清楚为什么会这样吗?
答案 0 :(得分:4)
一些谷歌搜索建议如下:
BeagleBoard使用TI的OMAP 3530处理器,该处理器使用ARMv7指令集(根据Wikipedia)。
The ARM website表明自ARMv6以来,swpb
指令已被弃用(默认情况下已禁用):
ARMv6及更高版本使用SWP和SWPB弃用。 ARMv7的多处理器扩展在CP15系统控制寄存器中引入了SW位。在实现这些扩展的处理器上,上电或复位后,软件必须将此位设置为1才能使用SWP和SWPB指令。
bug report详细介绍:
src / arch / corelib / qatomic_arm.h中的“generic arm”原子使用
swp
和swpb
指令。这与Thumb-2不兼容,并且不会是多核安全的,特别是对于armv7。
我担心这不是我的核心专业领域,而且我目前还没有这样的董事会。
我的建议是尝试启用System Control Register SW bit并查看是否有助于您(看到您没有使用多个核心,也许上面的错误报告中提到的问题不会影响您)。
或者,this patch似乎可以通过使用其他方法模拟问题说明为您提供另一条路径。
祝你好运!答案 1 :(得分:2)
/corelib/arch/qatomic_arm.h:131:错误:没有这样的指令:`swpb%al,%dl,[%esi]'
%esi
是一个x86寄存器,al
和dl
也是x86,看起来是16位ax和dx寄存器的下半部分?我看起来喜欢Qt配置为ARM处理器,你有x86 gcc编译它。
...可能正在删除-fast
让配置选择正确的编译器。
答案 2 :(得分:1)
实际上删除-fast做了伎俩。所以最终使用的命令是
./configure -embedded armv7 -prefix /home/thwijeth/Software/qt-4.7.4-embedded -xplatform qws/linux-arm-gnueabi-g++ -little-endian -opensource