最近我一直在尝试调试一些低级别的工作而我找不到编译器的crt0.S
(avr-gcc),但我找到了crt1.S
(和与相应的.o
文件相同。
这两个文件有什么区别? crt1
是完全不同的东西还是什么?它们似乎都与'bootstrapping'(设置stack frame
等)有关,但为什么区别呢?
答案 0 :(得分:34)
crt0 / crt1都做同样的事情,基本上在调用main()之前做了所需的事情(比如初始化堆栈,设置irqs等)。你应该链接一个或另一个但不是两个。它们不是真正的库,而是真正的内联汇编代码。
据我了解,crt有两种“味道”