一,靜態庫
程式在編譯鏈結期間的時候把庫的**鏈結到可執行檔案中,程式執行的時候將不再需要靜態庫
二,動態庫
程式在執行的時候才去鏈結動態庫的**,多個程式共享使用庫的**
在可執行檔案開始執行以前,外部函式的機器碼由作業系統從磁碟上的動態庫中複製到記憶體中,這個過程叫動態鏈結
動態庫可以在多個程式間共享,所以動態鏈結使得可執行檔案變小,節省了磁碟空間,作業系統採用虛擬記憶體機制允許物理記憶體中的乙份動態庫被要到該庫的所有程序公用,節省了記憶體和磁碟空間。
比較:靜態庫,可移植性好,記憶體消耗大
動態庫,可移植性差,消耗少
三,生成庫
靜態庫生成:在linux中,用ar - rc 庫名.a .o檔案 即可
要想用庫,-l 指定庫路徑 -l 指定庫名 , -i 指定標頭檔案的所在路徑
檢視:ar -tv 庫名.a
動態庫生成:gcc - fpic -c 檔名 (產生位置無關碼)
gcc -shared -o 庫名.so .o檔案
注意:在linux下,必須設定環境路徑ld_library= 你的庫所在路徑(因為在預設環境中找不到你的庫。
靜態庫與動態庫實現
本質上來說,庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。某些 需要給別人使用,但是我們不希望別人看到原始碼,就需要以庫的形式進行封裝,只暴露出頭檔案 對於某些不會進行大的改動的 我們想減少編譯的時間,就可以把它打包成庫。靜態庫即靜態鏈結庫 windows 下的 lib,linux ...
靜態庫動態庫
靜態庫動態庫 靜態庫 是在執行程式之前就已經加入到執行 中,成為執行程式的一部分來執行的,字尾名 a 動態庫 是在執行程式啟動時載入到執行 中,字尾名 so 靜態庫和動態庫區別 動態庫編譯速度慢,執行速度快,但是生成的程式體積較大,占用記憶體,然而動態庫較易公升級,就布局而言,動態庫 不易布局,執行...
靜態庫動態庫
我們使用ls l的時候看到的除了看到檔名,還看到檔案的元資料 擁有的許可權 硬鏈結數 檔案所有者 組 大小 檔案最後修改時間 檔名ls l讀取儲存在磁碟上的檔案資訊,然後顯示出來 其實這個資訊除了通過這種方式來讀取,還有乙個sata命令能夠看到更多的資訊 這裡寫描述 上面的執行結果有幾個資訊需要解釋...