[英]How does GCC link objects?
我可以使用此命令鏈接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
如何調用鏈接器並將目標文件鏈接到可執行文件?
答案比您想象的要復雜。
跑
gcc -v example.o -o example.exe
了解發生了什么
詳細信息是特定於操作系統的。 在Linux上,它以靜默方式加載crt*.o
對象(包含調用您的main
等的_start
匯編代碼等)和C庫。 我不知道您的平台在做什么; 我從未在Windows上編譯過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.