2011-05-11 34 views
35

我下載了這個:https://github.com/mongodb/mongo-c-driver什麼是擴展名爲.a的文件?

現在我試圖在我的C程序中使用它,但我不知道如何處理生成的.a文件。他們是什麼?我找不到任何信息,即使在GCC手冊中也沒有。

我建立了它,像這樣:

scons --c99 

另外,我可以使用C99庫與我的C89的程序?

+0

可能重複的* [.so,.la和.a庫文件之間的區別?](https://stackoverflow.com/questions/12237282 /什麼最差之間那麼LA-​​和一個庫文件)*。 – 2017-11-26 17:19:52

回答

48

.a文件是static庫,通常由archive tool生成。通常包含與該靜態庫關聯的頭文件,然後在編譯時鏈接到庫。

+0

我以爲.so文件是庫文件。我需要使用兩種嗎? – Blub 2011-05-11 13:50:08

+4

@Blub:有靜態庫和共享庫。在Linux中,.a是一個靜態庫(archive),而.so是一個共享庫(共享對象)。 – unwind 2011-05-11 14:03:43

+0

您可以使用'ar tv foo.a'來查看'.a'靜態庫的內容。它通常是'.o'目標文件的集合。 – 2013-09-20 16:03:00

18

.a使用ar實用程序創建文件。他們是圖書館。與gcc使用它,收集所有.a fileslib/文件夾,然後用-L lib/-l<name of specific library>

收集所有.a文件的鏈接到的lib /是可選的。這樣做使更好看的目錄與代碼和庫很好的分離,恕我直言