Pour mon projet, j'ai besoin de compiler Qt 5.9.1 pour un périphérique ARM générique. J'ai mis en place la chaîne d'outils de linaro. Mais Qt à ce configurer arrête:La chaîne d'outils ARM recherche le mauvais répertoire pour les bibliothèques
/usr/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/mnt/elvees-rootfs/ -Wl,-O1 -fuse-ld=gold -o verifyspec verifyspec.o
/usr/bin/arm-linux-gnueabihf-ld.gold: error: /lib/libc.so.6: incompatible target /usr/bin/arm-linux-gnueabihf-ld.gold: error: cannot open /lib/ld-linux-armhf.so.3: No such file or directory /usr/bin/arm-linux-gnueabihf-ld.gold: error: /lib/libc_nonshared.a(elf-init.oS): incompatible target ../sysdeps/arm/start.S:124: error: undefined reference to '__libc_start_main' ../sysdeps/arm/start.S:128: error: undefined reference to 'abort' ../sysdeps/arm/start.S:113: error: undefined reference to '__libc_csu_fini' ../sysdeps/arm/start.S:120: error: undefined reference to '__libc_csu_init' collect2: error: ld returned 1 exit status
Des regards de celui-ci, le bras-linux-gnueabihf-g ++ cherche libs dans d'hôte/lib /, au lieu de la sysroot de. Une raison pour un tel comportement et comment le réparer? Mon meilleur pari est les liens symboliques cassés dans le sysroot monté, mais j'ai manuellement changé le "libc.so.6" un, et la sortie est toujours la même chose. Pour clarifier, l'hôte et la cible exécutent Arch.
Modifier
Sur demande, voici mon qmake.conf (qui génère mkspec):
include(../common/linux_device_pre.conf)
ELVEES_CFLAGS = -march=armv7-a -mtune=cortex-a9 -mfpu=neon-fp16 -DLINUX=1
QMAKE_CFLAGS += $$ELVEES_CFLAGS
QMAKE_CXXFLAGS += $$ELVEES_CFLAGS
DISTRO_OPTS += hard-float
QT_QPA_DEFAULT_PLATFORM = eglfs
include(../common/linux_arm_device_post.conf)
QMAKE_INCDIR_EGL = /mnt/elvees-rootfs/usr/include/EGL
QMAKE_LIBDIR_EGL = /mnt/elvees-rootfs/usr/lib
QMAKE_INCDIR_OPENGL_ES2 = /mnt/elvees-rootfs/include/GLES2
QMAKE_LIBDIR_OPENGL_ES2 = /mnt/elvees-rootfs/usr/lib
QMAKE_LIBS_EGL = -lEGL
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL}
load(qt_config)
Et ce sont les options de qt_config:
./configure \
-opengl es2 \
-device arch-elvees-g++ \
-device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- \
-sysroot /mnt/elvees-rootfs/ \
-opensource \
-confirm-license \
-optimized-qmake \
-release \
-make libs \
-prefix /opt/qt-elvees\
-no-pch \
-nomake examples \
-nomake tests \
-no-xcb \
-eglfs \
-v
Je vous recommande fortement de le faire sur un Raspberry Pi avec Raspbian. Ne perdez pas votre temps avec le compilateur croisé. –
ce que mkspec pour la compilation croisée de qt utilisez-vous? Ajoutez-le à votre message pour clarifier la question. – fghj
@TheQuantumPhysicist Chose amusante, j'ai environ 3 pi qui traînent avec qt croisées. Mais l'objectif du projet est de porter Qt sur ce périphérique ** spécifique **. Donc, je suis un peu hors des options ici. Mais merci pour un conseil de toute façon – DarkMalex