我正在尝试使用安装在 /home/user/Software 的 beagle 板的 angstrom 工具链来编译 qt 4.7.4。
我收到的错误是:
/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
有人能弄清楚为什么会发生这种情况吗?
一些谷歌搜索建议如下:
BeagleBoard 使用 TI 的奥玛普 3530处理器,它使用ARMv7指令集(根据维基百科).
ARM 网站建议swpb
自 ARMv6 以来,该指令已被弃用(默认情况下禁用):
ARMv6 及更高版本不推荐使用 SWP 和 SWPB。 ARMv7 的多处理器扩展在 CP15 系统控制寄存器中引入了 SW 位。在实现这些扩展的处理器上,上电或复位后,软件必须将该位设置为 1 以启用 SWP 和 SWPB 指令。
A 错误报告更详细地说:
src/arch/corelib/qatomic_arm.h 中的“通用arm”原子使用swp
and swpb
指示。这与 Thumb-2 不兼容,并且不具有多核安全性,尤其是对于 armv7。
恐怕这不是我的核心专业领域,而且目前我面前没有这样的董事会。
不过,我的建议是尝试启用系统控制寄存器SW位看看这是否对您有帮助(鉴于您没有使用多核,也许上面的错误报告中提到的问题不会影响您)。
或者,这个补丁看起来它可以通过使用替代方法模拟问题说明来为您提供另一条路线。
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)