靜態庫
動態庫
它們兩個還有很明顯的不同點:當同乙個程式分別使用靜態庫,動態庫兩種方式生成兩個可執行檔案時,靜態鏈結所生成的文 件所占用的記憶體要遠遠大於動態鏈結所生成的檔案。這是因為靜態鏈結是在編譯時將所有的函式都編譯進了程式,而動態鏈結是 在程式執行時由作業系統幫忙把動態庫調入到記憶體空間中使用。另外如果動態庫和靜態庫同時存在時,鏈結器優先使用動態庫。
生成方式:
靜態庫:
gcc -c file1.c
gcc -c file2.c
...
gcc -c filen.c
ar -rcs libname.a file1.o file2.o ... filen.o
動態庫:
gcc -shared -fpic -o lib庫名.so file1.c file2.c ... filen.c
使用靜態庫或動態庫:
gcc 檔名 -l lib_path -l庫名
靜態庫 a和動態庫 so生成及呼叫
gcc編譯器工具一般位於 usr bin或者 usr local bin目錄,但它會從其它位置執行各種編譯器支援的應用程式,這個位置可能是 usr lib gcc lib 目錄,gnu c c 編譯器的各個工具和gnu專用標頭檔案都儲存在這裡。標頭檔案,一般位於 usr include,包含標頭檔案...
靜態庫和動態庫的區別
windows vc 靜態庫 在編譯的時候載入生成目標檔案,在執行時不用載入庫,在執行時對庫沒有依賴性。動態庫 在目標檔案執行時載入,手動載入,且對庫有依賴性。兩者區別 一,靜態庫的使用需要 1 包含乙個對應的標頭檔案告知編譯器lib檔案裡面的具體內容 2 設定lib檔案允許編譯器去查詢已經編譯好的...
靜態庫和動態庫的區別
靜態庫在程式編譯時被連線到目標 中,程式執行時不再需要靜態庫 動態庫在編譯時並不被連線到目標 中,而是程式執行時才被載入,執行時仍然需要動態庫存在。靜態庫的命名規範是以 lib為字首,緊接著是靜態庫名,副檔名是.a 先將檔案編譯成 o 檔案然後是編譯成靜態檔案 動態庫檔案在檔名前加 lib字首,擴充...