GCC如何链接对象?

时间:2012-01-11 06:18:46

标签: gcc linker ld

我可以使用此命令链接我的example.o,没有问题

gcc example.o -o example.exe

但是如果我使用ld手动链接它,我会收到很多错误:

ld example.o -o example.exe
example.o:example.c:(.text+0x1d7e5): undefined reference to `strcmp'
example.o:example.c:(.text+0x1d9b6): undefined reference to `_ftime'
example.o:example.c:(.text+0x1dcbd): undefined reference to `strchr'
example.o:example.c:(.text+0x1df7f): undefined reference to `strtoul'
...

gcc如何调用链接器并将目标文件链接到可执行文件中?

1 个答案:

答案 0 :(得分:0)

答案比你想象的要复杂得多。

运行

gcc -v example.o -o example.exe

了解正在发生的事情

血腥细节是特定于操作系统的。在Linux上,它以静默方式加载crt*.o个对象(包含_start汇编代码,调用您的main等等...)和C库。我不知道你的平台在做什么;我从未在Windows上编译。