Problemas de compilación cruzada Qt 4.7 de la fuente para ARM

Estoy tratando de compilar Qt 4.7.1 desde la fuente, aquí hay algunas notas sobre mi configuración:

mi salida esperada son las bibliotecas de objetos compartidos que deben estar presentes para poder ejecutar una aplicación Qt.Mi plataforma objetivo es un procesador TI AM335x de arquitectura ARM Cortex-A8.Mi plataforma de desarrollo es una máquina virtual x86 de 64 bits de Ubuntu

Mi comprensión de cómo debería funcionar es que descargo la cadena de herramientas para mi plataforma objetivo (esta es laLinaro toolchain de TI), descargo el código fuente paraQt 4.7.1, Configuro la mkspec para usar mi cadena de herramientas, ejecutarconfigure, entonces solo hay que corrermake/make install y debería ser capaz de encontrar todos los.soEs donde le dije que lo instalara. Sin embargo, estoy teniendo muchos problemas para que esta idea funcione.

Primero descargué la versión de TI SDK: ti-sdk-am335x-evm-06.00.00.00 que tiene la herramienta de armado en:[root_install_dir]/linux-devkit/sysroots/i686-arago-linux/usr/bin

Actualicé mi$PATH con ese directorio:

mike @ mike-VirtualBox: ~ $ echo $ PATH/home/mike/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin : /usr/local/Trolltech/Qt-4.8.5/bin: / home / mike / bin: / usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin : / usr / bin: / sbin: / bin: / usr / games: / home / mike / bin

Luego creé mi propia mkspec basada en el ejemplo más cercano:cp -R [qt_install_dir]/mkspecs/qws/linux-arm-gnueabi-g++/ [qt_install_dir]/mkspecs/qws/linux-am335x-g++

y modifiqué ellinux-am335x-g++/qmake.conf para apuntar a las herramientas del sdk de TI:

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-strip

Luego ejecuté un comando de configuración:

./configure -prefix /home/mike/qt4.7.1_source/my_qt-brazo integrado -platform qws / linux-x86_64-g ++ -xplatform qws / linux-am335x-g ++ -no-mmx -no-3d -no-sse - no-sse2 -no-glib -no-cups -no-archivo grande -no-accesibilidad -no-openssl -no-gtkstyle -fast -opensource

Se ejecuta durante un tiempo, luego se completa y dice que está listo para hacerlo.make/make install en este punto corromake y ahí es donde empieza a fallar:

/home/mike/qt4.7.1_source/qt-everywhere-opensource-src-4.7.1/bin/moc -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DELF_INTERPRETER = \ "/ lib64 /ld-linux-x86-64.so.2 \ "-DHB_EXPORT = Q_CORE_EXPORT -DQT_HAVE_NEON -DQT_NO_DEBUG -I ../../ mkspecs / qws / linux-am335x-g ++ -I. -I ../../ include -I ../../ include / QtCore -I.rcc / release-shared-shared-emb-arm -Iglobal -I ../ 3rdparty / harfbuzz / src -I ../ 3rdparty / md5 -I ../ 3rdparty / md4 -I.moc / release-shared-emb-arm-kernel / qobject.h -o .moc / release-shared-emb-arm / moc_qobject.cpp arm-linux-gnueabihf-g ++ -c -include .pch / release-shared-shared-emb-arm / QtCore -pipe -fno-exceptions -mfpu = neon -O2 -fisibilidad = oculto -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DELF_INTERPRETER = \ "/ lib64 / ld-linux-x86-64.so.2 \" -DHB_EXPORT = Q_CORE_EXPORT -DQT_HAVE_NEON -DQT_NO_DEBUG -I ../ .. / mkspecs / qws / linux-am335x-g ++ -I. -I ../../ include -I ../../ include / QtCore -I.rcc / release-shared-shared-emb-arm -Iglobal -I ../ 3rdparty / harfbuzz / src -I ../ 3rdparty / md5 -I ../ 3rdparty / md4 -I.moc / release-shared-emb-arm -o .obj / release-shared-emb-arm / qobject.o kernel / qobject.cpp
{entrada estándar}: mensajes del ensamblador:
{entrada estándar}: 1294: Error: el procesador seleccionado no admite el modo Thumb 'swp r6, r4, [r3]'
hacer [1]: [.obj / release-shared-emb-arm / qobject.o] Error 1*
make [1]: dejando el directorio
'/home/mike/qt4.7.1_source/qt-everywhere-opensource-src-4.7.1/src/corelib'
hacer:* [sub-corelib-make_default-pedidos] Error 2

Entonces, la pregunta ... ¿Por qué el compilador se queja de que el modo pulgar no es compatible? Como se trata de una cadena de herramientas de compilación cruzada para unBRAZO procesador basadodebiera ser soportado. El hecho de que no sea así me hace sentir quemake está recogiendo de alguna manera la versión incorrecta de g ++.

¿Alguna idea sobre lo que salió mal y cómo solucionar esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta