動態和靜態庫即呼叫

2021-06-14 22:24:19 字數 496 閱讀 6033

庫:一種可執行**的二進位制形式,可以被載入記憶體執行,其中可分為靜態庫和動態庫。

一· 靜態庫:

linux下一般為.a結束,由於靜態庫是要編譯程序式中的,所以利用靜態庫編譯成的執行檔案比較大(相比動態庫);

優點:因為整個靜態庫的所有資料(**)都會被整合進目標**中,所有使用的函式也被編譯進去了,所以編譯後生成的可執行檔案不需要任何外部庫的支援;

缺點:因為當庫改變時,要重新編譯整個工程。

二. 動態庫

linux下動態庫名字一般以.so結束,相比靜態庫,動態庫是不被編譯進目標**的,只有你的程式執行到相關函式時才呼叫動態庫裡面的相關實現或者定義的函式;

由於不用編譯進目標**,所以編譯生成的可執行檔案較小。

優點:動態庫函式改變並不影響你的程式,所以動態庫公升級比較方便。

缺點:

由於庫沒有被編譯進目標**,而是程式執行時動態申請呼叫函式,所以程式的執行環境中必須提供相應的庫。

未完待續

參考:

動態庫和靜態庫

本文主要解決以下幾個問題 1 為什麼要使用庫?2 庫的分類 3 建立自己的庫 或許大家對自己初學linux時的情形仍記憶尤新吧。如果沒有乙個能較好的解決依賴關係的包管理器,在linux下安裝軟體將是一件及其痛苦的工作。你裝a包時,可能會提示你要先裝b包,當你費盡心力找到b包時,可能又會提示你要先安裝...

動態庫和靜態庫

先抄一段 windows下的動態庫和靜態庫區別解釋,其實linux下意義一樣的,不過字尾名有些區別 靜態庫 在編譯的時候載入生成目標檔案,在執行時不用載入庫,在執行時對庫沒有依賴性。動態庫 在目標檔案執行時載入,手動載入,且對庫有依賴性。兩者區別 一,靜態庫的使用需要 1 包含乙個對應的標頭檔案告知...

動態庫和靜態庫

簡單的說,使用動態庫就是在鏈結的時候,不會將動態庫的 鏈結到可執行檔案中,而是採用symbol的方式。使用靜態庫,生成可執行檔案的時候,會將靜態庫的 鏈結到可執行檔案中。這樣,動態庫體積會很小,並且可以,依賴於更新的動態庫,但是,缺點是不穩定。靜態庫會更加穩定,但是體積會很大。靜態庫 就是多個目標檔...