我正在使用this Makefile进行一项青少年项目,即使crti.o
和crtbegin.o
中有crt0.o
,/usr/lib/x86_64-linux-gnu
和LIBRARY_PATH
在LD_LIBRARY_PATH
和make
中都有该目录,运行[LD] balloons-Parafoil.elf
/afs/.ir.stanford.edu/users/e/r/ericmark/Development/balloons-
Parafoil/tools/arm/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-
none-eabi/bin/ld: cannot find crti.o: No such file or directory
/afs/.ir.stanford.edu/users/e/r/ericmark/Development/balloons-
Parafoil/tools/arm/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-
none-eabi/bin/ld: cannot find crtbegin.o: No such file or directory
/afs/.ir.stanford.edu/users/e/r/ericmark/Development/balloons-
Parafoil/tools/arm/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-
none-eabi/bin/ld: cannot find crt0.o: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [balloons-Parafoil.elf] Error 1
时仍然出现以下错误:
{{1}}
我应该注意到,这个错误发生在我尝试过的Ubuntu机器上,而不是我正在开发的macOS机器上。
答案 0 :(得分:0)
crti.o
等C运行时文件是高度机器特定的。您不能使用/usr/lib/x86_64-linux-gnu
中的x86-64版本来创建ARM二进制文件。您需要这些文件的版本,以用于要定位的32位ARM的变体。查看the Canonical downloads page,它看起来不再像当前的Ubuntu支持32位ARM,但是在启用相关的Debian存储库后,您可以安装libc6-dev:armel
。您使用的工具链也可能未正确设置。
此外,如果您的ARM工具链以裸机为目标,那么glibc对您没用,因为glibc假设它可以使用正在运行的Linux内核。