7

我正在尝试升级到yagarto4.7.2(Yet Another GNU ARM toolchain,对于那些想知道的人),它是 gcc 和 binutils,移植到 Windows。但是,尝试编译一个简单的 Hello World 会产生:

c:/yagarto-20121222/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi
/bin/ld.exe: cannot find crt0.o: No such file or directory
collect2.exe: error: ld returned 1 exit status

现在,在这个论坛中,它明确表示这是启动初始化库,在 gcc4.6.x 之后被删除。提出了两种解决方案:

  • 使用 -nostartfiles 编译
  • 将 crt0.o 从 4.6.x 复制到 4.7.x 文件夹

对于生产代码,两者看起来都很脏且不可接受。那么有谁知道为什么这个库被删除了,现在它的等价物是什么?

4

1 回答 1

3

crt0.o 派生自操作系统提供的 crt0.s。在裸机设置的情况下,此文件必须由实现提供。它包含启动和退出代码,例如用于将 .bss 归零。

于 2013-06-07T11:43:36.850 回答