#gcc #kernel #eabi #crosstool-ng
#gcc #ядро #eabi #crosstool-ng
Вопрос:
Я только что создал кросс-компилятор gcc11 с crosstool-ng для «arm-unknown-eabi» для компиляции моего ядра (Android для набора микросхем msm8974), но в какой-то момент компоновки LD выдает эту ошибку о версиях EABI, но целевой файл даже не существует. Это компоненты набора инструментов crosstool:
- binutils-2.34.tar.xz
- gcc-git-46a58c77.tar.bz2
- gettext-0.20.1.tar.xz
- gmp-6.2.0.tar.xz
- isl-0.22.tar.xz
- libiconv-1.16.tar.gz
- mpc-1.1.0.tar.gz
- mpfr-4.0.2.tar.xz
- ncurses-6.2.tar.gz
- newlib-3.3.0.tar.gz
Полная команда, которая выдает ошибку, такова:
- /root/x-tools/arm-unknown-eabi/bin/arm-unknown-драйверы eabi-ld -EL -r -o / gpu/встроенные.o драйверы / gpu / drm / встроенные.o драйверы / gpu / ion/ встроенные.o
- /root/x-tools/arm-unknown-eabi/bin/arm-unknown-eabi-ld: ошибка: драйверы исходного объекта / gpu / ion / встроенные. o имеет версию EABI 5, но целевые драйверы / gpu / встроенные.o имеет версию EABI 0
- /root/x-tools/arm-unknown-eabi/bin/arm-unknown-eabi-ld: не удалось объединить целевые данные драйверов файлов / gpu / ion/ built-in.o
Просматривая эти файлы:
- drivers/gpu/built-in.o: не удается открыть `drivers/ gpu/built-in.o’ (такого файла или каталога нет)
- драйверы / gpu / drm / встроенные.o: ELF 32-разрядный LSB с возможностью перемещения, ARM, версия 1 (ARM), не удален
- драйверы / gpu / ion / встроенные.o: ELF 32-разрядный LSB с возможностью перемещения, ARM, EABI5 версии 1 (SYSV), не удален
Реальная цель (драйверы / графический процессор / встроенный.o) даже не существует. Существует DRM (который не отображается как EABI5), хотя и очень маленький (320 байт, я думаю, он создан AR?).
С другими цепочками инструментов все отлично сочетается с точно таким же кодом ядра, Makefile и т.д. Раньше я использовал musl gcc 10.