2011-05-30 143 views
21

似乎可以從目標文件中生成的歸檔文件:目標文件和靜態庫(存檔文件)有什麼區別?

ar rvs libprofile.a profile.o 

什麼是目標文件和歸檔文件之間的區別?

在我看來,既可以用gcc直接使用,例如:

gcc *.c profile.ogcc *.c libprofile.a

有什麼區別?

+1

可能的重複[爲什麼從靜態鏈接創建一個.a文件?](http://stackoverflow.com/questions/1852941/why-create-aa-file-from-o-for-static-鏈接) – 2014-03-20 15:13:57

回答

12

靜態庫是一個或多個目標文件的集合,其索引允許快速搜索。編譯器如何處理它們有一些細微的差異。與對象文件,你鏈接是這樣的:

gcc f1.o f2.o -o myexe 

與圖書館,你也可以這樣做:

gcc f1.o libf2.a -o myexe 

,或者您可以使用速記:

gcc d1.o -lf2 -L. -o myexe 

此外,GCC將始終鏈接.o文件,但它只會搜索庫和從它們鏈接,如果還有未定義的名稱仍然需要解決。

+0

Butterworth,但'gcc'可以使用它們,或者至少在使用.o的地方.a也可以使用,對吧? – 2011-05-30 14:29:35

+0

是的,但正如我指出的那樣,使用情況可能會稍有不同。 – 2011-05-30 14:30:08

相關問題