簡體   English   中英

gcc -nostdlib 是否阻止顯式附加標准庫?

[英]Does gcc -nostdlib prevent explicit appending of standardlibs?

如果我使用選項-nostdlib調用 GCC 鏈接器,這是否會覆蓋標准庫的任何手動/顯式-nostdlib

GCC 是來自 MinGW 的 4.8.1。

例子:

gcc -nostdlib [MyObjectsAndLibraries] -lmsvcrt -o Outfile

由於libmsvcrt是一個標准庫,它會被添加到鏈接過程中還是會被忽略? 我找不到任何可靠的數據。這就是為什么我也希望得到某種來源。

在這種情況下,“標准庫”是指默認情況下gcc會隱式鏈接的庫。 命令行中明確提到的庫將始終被鏈接。 事實上, http: gcc文檔甚至指出,除非你真的知道你在做什么,否則你應該使用-nostdlib時明確添加-lgcc ,因為編譯器可能依賴其中定義的一些內置函數:

換句話說,當您指定 -nostdlib 或 -nodefaultlibs 時,您通常也應該指定 -lgcc。 這確保您沒有對內部 GCC 庫子例程的未解析引用。

自從我在谷歌上找到了這個,

@Virgile 的回答就足夠了,但是當您使用您提供的命令樣式進行鏈接時,您可能會遇到鏈接器錯誤。 程序構建有兩個步驟:編譯和鏈接。 您可以使用 GCC 執行其中一項或兩項操作。

請務必注意您指定事物的順序。 在您的構建中,它可能有問題,因為您的 exe 永遠不會與 msvcrt 或 gcc 鏈接。 包含兩個可能具有相同符號的庫也很糟糕。

這是規范的構建和鏈接語句

gcc -g0 -O2 -Wall -nostdlib -c *.c
gcc -g0 -O2 -Wall -nostdlib -o a.exe *.o -lmsvcrt -lgcc

gcc -g0 -O2 -Wall -nostdlib -o a.exe *.c -lmsvcrt -lgcc

這是一個很好的參考https://stackoverflow.com/a/18389266/2262111

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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