ARM toolchain ищет неправильный каталог для библиотек
Для моего проекта мне нужно скомпилировать Qt 5.9.1 для стандартного устройства ARM. Я установил набор инструментов Линаро. Но Qt configure останавливается на этом:
/ usr / bin / arm-linux-gnueabihf-g ++ -mfloat-abi = hard --sysroot = / mnt / elvees-rootfs / -Wl, -O1 -fuse-ld = gold -o verifyyspec verifyyspec.o
/usr/bin/arm-linux-gnueabihf-ld.gold: ошибка: /lib/libc.so.6: несовместимая цель /usr/bin/arm-linux-gnueabihf-ld.gold: ошибка: невозможно открыть /lib/ld-linux-armhf.so.3: Нет такого файла или каталога /usr/bin/arm-linux-gnueabihf-ld.gold: ошибка: /lib/libc_nonshared.a(elf-init.oS): несовместимая цель../sysdeps/arm/start.S:124: ошибка: неопределенная ссылка на '__libc_start_main' ../sysdeps/arm/start.S:128: ошибка: неопределенная ссылка на 'abort' ../sysdeps/arm/start.S:113: ошибка: неопределенная ссылка на '__libc_csu_fini' ../sysdeps/arm/start.S:120: ошибка: неопределенная ссылка на '__libc_csu_init' collect2: ошибка: ld вернул 1 состояние выхода
Судя по всему, arm-linux-gnueabihf-g++ ищет библиотеки lib в каталоге хоста / lib /, а не в sysroot. Есть ли причина такого поведения и как это исправить? Моя лучшая ставка - неработающие символические ссылки в смонтированном sysroot, но я вручную изменил "libc.so.6", и результат остался прежним. Чтобы уточнить, хост и цель работают Arch.
редактировать
По запросу, вот мой qmake.conf (который генерирует 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)
И это параметры 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
1 ответ
Видимо, добавляя -no-gcc-sysroot
Параметр для настройки сработал.