2017-08-01 32 views
0

當編譯使用MinGW的彙編輸出包含行什麼圖書館在GCC彙編輸出的__main函數引用

call __main 

什麼庫是這個從空的C程序?我希望鏈接msvcrt.dll工作(鏈接使用ld),但它沒有,它必須在其他地方定義。

其他地方有很多相關/實際上相同的問題,但他們都沒有(就我所見,一直在尋找一段時間)實際上包含了這個問題的答案,所以請仔細檢查,然後再標記爲重複。

+1

我不確定(這是爲什麼這是一個註釋,而不是答案),但它應該在'libgcc'或'libgcc_s'中,它們都應該與MinGW編譯器一起提供。我也不知道MinGW環境中有什麼擴展。如果使用編譯器驅動程序進行鏈接,而不是直接調用'ld',則應自動選取這些庫;由於其他幾個原因,這是一個好主意。 – zwol

+0

@zwol工作!謝謝,隨時發表我可能接受的答案 – rtpax

回答

2

__main應該由MinGW編譯器附帶的libgcc庫提供。

如果您使用編譯器驅動程序(即,gcc命令行工具)來鏈接您的程序,而不是直接調用ld,則應該將該庫自動添加到鏈接中。對於這個和其他幾個原因,建議使用編譯器驅動程序進行鏈接。

具體取決於您擁有的MinGW的版本以及它嵌入的GCC的版本,libgcc或其中的一部分可能是一個DLL,如果您運送的是MinGW編譯的可執行文件,則必須將其捆綁。