我正在尝试升级到yagarto4.7.2(对于那些想知道的人,还有另一个GNU ARM工具链),它是为Windows移植的gcc和binutils。但是,尝试编译一个简单的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

现在,在此forum中,很清楚这是启动初始化库,已在gcc4.6.x之后删除。提出了两种解决方案:
  • 使用-nostartfiles编译
  • 将crt0.o从4.6.x复制到4.7.x文件夹

  • 两者看起来都很脏,并且对于生产代码而言是 Not Acceptable 。有人知道为什么要删除此库,现在等效吗?

    最佳答案

    crt0.o源自操作系统提供的crt0.s。对于裸机设置,该文件必须由实现提供。它包含启动和退出代码,例如用于将.bss清零。

    关于gcc - 从gcc4.7.x中删除crt0.o的基本原理是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16981704/

    10-11 19:14