LD crosstool-ng выдает «исходный объект a / b / встроенный.o имеет версию EABI 5, но целевой объект b / встроенный.o имеет версию EABI 0» при компиляции ядра

#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.