2012-07-10 86 views
1

我一直在Linux上構建一個靜態庫。到目前爲止,它純粹是自包含的,並且裏面的所有代碼都不使用標準庫以外的任何其他代碼。我最近做了一個改動,現在一些編譯單元正在使用boost代碼。在linux上構建靜態C++庫 - 我需要鏈接到其他庫嗎?

g++ -c -Wall -pedantic *.cpp 
ar -cvq libbfclass.a *.o 

我的問題是:是否有必要對我來說,適應這種方法來處理使用新庫或將我只需要提供的鏈接庫我一直使用以下構建庫當構建使用我自己的庫的可執行文件?從我所瞭解的靜態庫基本上只是一個目標文件的存檔,但我想知道是否需要修改我的生成腳本,以使所有工作,因爲它應該,或者如果它只是在構建可執行文件時需要?

回答

5

你是對的 - 靜態庫只是對象文件的存檔。編譯最終可執行文件時會解析符號,因此您需要將引用提供給其他庫時。

+0

儘管如此,特別是當提供具有libtool生成的la-files的靜態檔案,甚至更好時,可用的pkg-config文件不僅使得使用該檔案更容易,而且還可以用作有用的文檔。儘管如此,這並不適用於動態庫。 – 2012-07-10 20:16:20

相關問題