2015-04-22 5 views
0

Я загрузил двоичные файлы ELLCC (Windows, MinGW). Я пытаюсь собрать и связать один очень простой ИК-файл.ecc throws linker error

x86_64-ellcc-windows-gnu, он отлично работает. Для armv7-ellcc-linux (arm-linux-engeabi) и любой другой цели ARM, он выдает сообщение об ошибке компоновщика похожее на это:

«V: \ Users \ Teo \ Загрузки \ ellcc-x86_64-W64-mingw32-0.1.12 \ бен/ecc-ld.exe "-n ostdlib" -LV: \ Users \ Teo \ Downloads \ ellcc-x86_64-w64-mingw32-0.1.12 \ bin \ .. \ libecc/lib/arm-linux-engeabi "- m armelf_linux_eabi --build-id --hash-style = gnu - -eh-frame-hdr -o a.out -e start -Bstatic "V: \ Users \ Teo \ Downloads \ ellcc-x86 64- w64-mingw32-0.1.12 \ bin \ .. \ libecc/lib/arm-linux-engeabi/crt1.o "" V: \ Users \ \ Teo \ Downloads \ ellcc-x86_64-w64-mingw32-0.1.12 \ bin \ .. \ libecc/lib/arm-linux- engeabi/crtbegin.o "C: \ Users \ Teo \ AppData \ Local \ Temp \ Int32Add-42cacb.o" - ( -lc -lcompiler-rt -) "V: \ Users \ Teo \ Downloads \ ellcc- x86_64-w64-mingw32-0.1.1 2 \ bin \ .. \ libecc/lib/arm-linux-engeabi/crtend.o " C: \ Users \ Teo \ AppData \ Local \ Temp \ Int32Add-42cacb.o :(ARM.exidx + 0x0):. не определен повторно Ference в `__aeabi_unwind_cpp_pr0'

Прочитав another answer on a similar issue, я подозреваю, что порядок зацепления является неправильным и, следовательно, времени выполнения не связан правильно.

Но как бы исправить порядок связывания - или что бы там ни было на самом деле, - так как компоновщик вызывается ecc? Есть ли причина, по которой ecc не позаботится об этом автоматически (тем более, что я даю только один ИК-файл для компиляции)?

ответ

1

Для arm-linux-engeabi символ «__aeabi_unwind_cpp_pr0» определен в libC++. A. Похоже, вам нужно добавить -lC++ в свою командную строку связи (до -lc) или использовать ecC++, а не ecc, чтобы связать вашу программу.

Он работает для x86_64, потому что недостающая функция специфична для ARM.