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 Параметр для настройки сработал.

Другие вопросы по тегам