Добрый вечер всем,
Я пытаюсь скомпилировать простую программу в Ada для микроконтроллера на базе Arm. Я установил пакет gnat-5-arm-linux-gnueabi
в подсистему Linux для Windows.
Теперь компиляция с arm-linux-gnueabi-gcc-5 -mcpu=cortex-m4 -mthumb program.adb
работает нормально, однако компоновка с arm-linux-gnueabi-ld -T flash.ld -o program.elf program.o
приводит к ошибке:
program.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
Я просмотрел существующие решения, однако ни одно из них не сработало для меня. Я попытался установить пакет gcc-arm-none-eabi
и использовать его компоновщик (та же ошибка), а также использовать ld
(не распознает цель руки).
Одна из моих теорий заключается в том, что я мог использовать неправильный пакет GNAT или двоичный файл либо для компиляции, либо для компоновки. Поэтому, если кто-то знает, где найти их описание, мне это тоже может помочь :-) (пакетов GNAT довольно много, но только 2 со словом «рука» в названии)
РЕДАКТИРОВАТЬ: есть файл libgcc_eh.a
под /usr/lib/gcc-cross/arm-linux-gnueabi/5/
, который содержит символ «раскрутить»; добавление этого файла к входным данным компоновщика, похоже, решает эту ошибку, но приводит к появлению нескольких новых «неопределенных ссылок»:
Incl/libgcc_eh.a(unwind-arm.o): In function 'get_eit_entry':
(.text+0x238): undefined reference to '__exidx_start'
Incl/libgcc_eh.a(unwind-arm.o): In function 'get_eit_entry':
(.text+0x23c): undefined reference to '__exidx_end'
Incl/libgcc_eh.a(unwind-arm.o): In function 'unwind_phase2':
(.text+0x334): undefined reference to 'abort'
Incl/libgcc_eh.a(unwind-arm.o): In function 'unwind_phase2_forced':
(.text+0x424): undefined reference to 'memcpy'
Incl/libgcc_eh.a(unwind-arm.o): In function 'unwind_phase2_forced':
(.text+0x478): undefined reference to 'memcpy'
Incl/libgcc_eh.a(unwind-arm.o): In function '__gnu_Unwind_Resume':
(.text+0x5b8): undefined reference to 'abort'
Incl/libgcc_eh.a(unwind-arm.o): In function '__gnu_Unwind_Resume':
(.text+0x5f4): undefined reference to 'abort'
Incl/libgcc_eh.a(pr-support.o): In function '_Unwind_GetTextRelBase':
(.text+0x4f0): undefined reference to 'abort'
gnat-5-sjlj-arm-linux-gnueabi
, так что, вероятно, это не проблема. - person micmys   schedule 10.02.2018