linux中的靜態鏈結庫

2021-09-16 12:54:54 字數 1091 閱讀 1034

c++編譯四個步驟,預處理,編譯,彙編,鏈結,所謂的靜態鏈結庫就是把部分寫好的**編譯到彙編結束這個步驟,然後把它們打包起來,等到再寫別的程式需要用到這裡的某些函式的時候,只需要把這個程式和之前的庫鏈結起來就可以了,簡化了編譯的步驟。不過靜態鏈結庫鏈結到某個程式這是一錘子買賣,可以認為只是單純的在你生成的程式裡複製了一塊當時連線的靜態庫的**,之後這個靜態庫改不改和你已經生成的程式已經沒有關係了,而且這樣還會浪費空間,因為如果你多次使用這個靜態庫,勢必會多出很多重複的**片段。

下面來看看怎麼建立乙個靜態鏈結庫。

我們打算用乙個靜態庫來儲存這個sum函式。這裡要明確一點,標頭檔案裡的內容只是被簡單的新增在了include它的cpp檔案裡邊,只是起到乙個宣告的作用,跟編譯靜態庫沒有任何關係。標頭檔案純粹是節省了我們自己寫函式宣告的時間。

前面說到靜態庫其實是目標檔案的集合體,我們生成靜態庫之前自然要把先把他們編譯成目標檔案

ar生成靜態庫,cr指定目標檔案,此時靜態庫已經被建立出來了。下面來看如何使用這個靜態庫。

沒有什麼特別的,include標頭檔案,使用函式。

惟一的區別在編譯的時候,-l . 通過-l選項來指定在當前目錄下尋找靜態庫,-lsum指定靜態庫的名字。

linux中的動態鏈結庫和靜態鏈結庫

什麼是庫?庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib...

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...