簡體   English   中英

GCC如何鏈接對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM