g 在處理 a檔案和 o檔案時的區別?

2021-08-01 16:36:28 字數 520 閱讀 7098

簡單的說,就是

g++ a.o b.o c.o -o a.out

ar rv libpack.a a.o b.o

g++ c.o libpack.a -o a.out

或者

ar rv libpack.a a.o b.o

g++ c.o -o a

.out -lpack

有什麼區別,對最終的行為有什麼影響?我只知道.a就是多個.o打個包,然後加個索引之類,但是在輸送給g++的時候,有什麼影響?

鏈結器在處理.a檔案的時候,會自動忽略那些沒有被引用的項,以保證鏈結結果中沒有太多無用的**

而在處理.o檔案的時候,則是你給它什麼就鏈結什麼

gtest的使用並沒有使用顯式的引用,因此會被鏈結器忽略。gtest具體是如何找到測試用例的就不清楚了,需要看源**吧。

對這個問題的解決方案有兩種:

Linux驅動中的 o檔案與 ko檔案的區別

最近在學習linux的驅動,之前做嵌入式實驗的時候載入驅動模組都是.o檔案,但是現在發現很多驅動模組都是.ko檔案,於是上網查了一下兩者的區別,現在貼出來,和大家一起分享。o檔案也就是object檔案,ko檔案是kernel object檔案,與.o的區別在於其多了一些sections,比如.mod...

在Windows批處理檔案中引用日期和時間的方法

下面介紹在windows批處理檔案中引用日期和時間的方法。date 輸出的是 yyyy mm dd 星期 例如 2008 12 18 星期四 引用格式 date x,y x 起始座標,y 從x開始擷取字元個數 如 date 0,4 yyyy date 5,2 mm date 8,2 dd 如取出格式...

標頭檔案和庫檔案的區別

標頭檔案中有函式的申明,庫檔案實現函式的定義。比如,printf函式。使用時應包括stdio.h,開啟stdio.h你只能看到,printf這 個函式的申明,卻看不到printf具體是怎麼實現的,而函式的實現在相應的c庫 中。而庫檔案一般是以二進位制形式而不是c原始檔形式提供給使用者使用的。程式 中...