0

我已经下载了 ELLCC 二进制文件(Windows、MinGW)。我正在尝试组装和链接一个非常简单的 IR 文件。

对于x86_64-ellcc-windows-gnu,它工作正常。对于armv7-ellcc-linux( arm-linux-engeabi) 和任何其他 ARM 目标,它会引发类似于以下的链接器错误:

"V:\Users\Teo\Downloads\ellcc-x86_64-w64-mingw32-0.1.12\bin/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开始 -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):未定义对“__aeabi_unwind_cpp_pr0”的引用

在阅读了有关类似问题的另一个答案后,我怀疑链接顺序错误,因此运行时未正确链接。

但是我将如何修复链接顺序 - 或者实际上是什么问题 - 因为链接器是由调用的ecc?有没有理由ecc不自动处理这个问题(特别是因为我只给它一个 IR 文件来编译)?

4

1 回答 1

1

对于 arm-linux-engeabi,符号“__aeabi_unwind_cpp_pr0”在 libc++.a 中定义。看起来您需要将 -lc++ 添加到链接命令行(在 -lc 之前)或使用 ecc++ 而不是 ecc 来链接您的程序。

它适用于 x86_64,因为缺少的功能当然是 ARM 特定的。

于 2015-04-23T11:29:28.080 回答