我可以使用此命令链接我的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
如何调用链接器并将目标文件链接到可执行文件中?
答案 0 :(得分:0)
答案比你想象的要复杂得多。
运行
gcc -v example.o -o example.exe
了解正在发生的事情
血腥细节是特定于操作系统的。在Linux上,它以静默方式加载crt*.o
个对象(包含_start
汇编代码,调用您的main
等等...)和C库。我不知道你的平台在做什么;我从未在Windows上编译。