/ / ecc хвърля грешка на линкер - ръка, кръстосано компилиране, грешки на линкер, ellcc

ecc хвърля грешка на линкер - ръка, кръстосано компилиране, грешки на линкер, ellcc

Изтеглих библиотеките ELLCC (Windows, MinGW). Опитвам се да събера и свържа един много прост IR файл.

За x86_64-ellcc-windows-gnu, тя работи добре. За armv7-ellcc-linux (arm-linux-engeabi) и всяка друга цел на ARM, тя хвърля грешка на линкер, подобна на тази:

"V: UsersTeoDownloadsellcc-x86_64-w64-mingw32-0.1.12bin / ecc-ld.exe "-n ostdlib "-LV: ПотребителиTeoDownloadsellcc-x86_64-w64-mingw32-0.1.12bin .. libecc / lib / arm-linux-engeabi "-m armelf_linux_eabi -build-id -hash-style = gnu- -eh-frame-hdr -o a.out -e start -Bstatic "V: ПотребителиTeoDownloadsellcc-x86 64-w64-mingw32-0.1.12bin ..libecc / lib / arm-linux-engeabi / crt1.o "" V: Потребители TeoDownloadsellcc-x86_64-w64-mingw32-0.1.12bin..libecc / ИЪ / рамо-linux- engeabi / crtbegin.o "" C: ПотребителиTeoAppDataLocalTempInt32Add-42cacb.o "- ( -lc -lcompiler-rt -) "V: ПотребителиTeoDownloadsellcc-x86_64-w64-mingw32-0.1.1 2bin..libecc / ПЬ / ръка-Linux-engeabi / crtend.o " С:. UsersTeoAppDataLocalTempInt32Add-42cacb.o :( ARM.exidx + 0x0): undefined re ference на "__aeabi_unwind_cpp_pr0"

След като прочетете друг отговор по подобен въпрос, Подозирам, че редът на свързване е погрешен и по този начин времето за изпълнение не е правилно свързано.

Но как да оправя реда за свързване - или каквото и да е всъщност проблемът -, тъй като линкерът се извиква от ecc? Има ли причина ecc не се грижи за това автоматично (особено след като му давам само един IR файл, който да се компилира)?

Отговори:

1 за отговор № 1

За arm-linux-engeabi, символа"__aeabi_unwind_cpp_pr0" е дефиниран в libc ++. Изглежда, че трябва да добавите -lc ++ към командния ред на връзката (преди -lc) или да използвате ecc ++, а не ecc, за да свържете програмата си.

Той работи за x86_64, защото липсващата функция е специфична за ARM, разбира се.