為什麼C語言包含了自帶庫之後鏈結時不需要鏈結對應的 o檔案?

時間 2021-06-01 06:20:32

1樓:yang leonier

然後有點疑惑,標準庫應該是預編譯好的,那為什麼在鏈結的時候不需要鏈結他們呢?

因為gcc缺省會自動鏈結它們啊。

你試試看-nodefaultlibs 這個引數,絕對會不能鏈結

2樓:千年放浪

加-v會發現gcc自帶了。最後collect2的時候。還有標準庫是已經編譯好,預編譯是另乙個概念。

gcc a.o -v

/usr/libexec/gcc/x86_64-redhat-linux/4.4.7/collect2 --eh-frame-hdr --build-id -m elf_x86_64 --hash-style=gnu -dynamic-linker /lib64/ld-linux-x86-64.

so.2 /usr/lib/gcc/x86_64-redhat-linux/4.4.

7lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/4.4.

7lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.4.

7/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/4.4.

7 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.7 -L/usr/lib/gcc/x86_64-redhat-linux/4.

4.7lib64 -L/lib/../lib64 -L/usr/lib/..

/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.7a.

o-lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-redhat-linux/4.4.7/crtend.

o /usr/lib/gcc/x86_64-redhat-linux/4.4.7lib64/crtn.o

為什麼在ndc歸一化座標已經包含了視錐體剔除功能的情況下 還需要視錐體裁剪?

Binarizer 這兩個完全不一樣的哦。視錐裁剪 Frustum Culling 一般是CPU做,只檢測包圍盒或者球 DX11後用GPU寫CS也可以,保證當幀不回讀就行 後面的是GPU做,你不可能在CPU階段就把所有頂點都去乘MVP的,而如果把所有東西一股腦都扔給GPU,你的GPU扛得住嗎?隨著解...

C 未包含 string 為什麼可使用string?

d41d8c 需要用到std ios base型別,std ios base有個成員類叫failure,std ios base failure有個建構函式接受std string 現在這被認為是個錯誤 我個人希望standard library module unit能消除這個問題。 馬小刀 編譯...

為什麼印歐語系的語言包括泰語的外來語會出現雙子音字母的單詞,明明就發乙個音,為啥要增加記憶難度?

波美拉尼亞公爵 題主可以去看法語拼寫。那叫乙個淚目 一些發音簡單的詞彙拼出來冗長無比 但法中國人為什麼要這麼做呢?其實就是傳統和語言變化的歷史痕跡,法語是日耳曼人改說拉丁語形成的語言,日耳曼語和拉丁語的母音系統相差較大,拉丁口語轉變為法語的過程中子音也有變化,同時還有大量新詞被造出,大量舊有詞彙被替...