自治靜態庫與共享庫

2021-09-25 10:04:36 字數 1024 閱讀 9734

在c/c++程式執行中,需要用到各種提前寫好的函式或方法,避免程式設計師每次都費力地編寫常用的**。這裡的提前寫好的函式的集合就是庫檔案了。庫檔案分為兩類,靜態庫和共享庫。靜態庫在每次**編譯時直接加進**裡,作為可執行程式的一部分,以.a來表示。共享庫不加入程式中,只在程式執行時調動使用,以.so表示。

下面分別製作乙個簡單的靜態庫和共享庫

建立.c檔案

一步步編譯生成.o檔案

用ar crv libxx.a xx.o格式的命令生成.a格式的靜態庫

-c(create)如果不存在則建立,不發出ar警告。

-r(replace)表示當插入add.o已存在同名檔案則覆蓋。

引用時使用命令 gcc -o file file.c -e. -l***命令

-e.表示在當前目錄下查詢,這裡有乙個.

-l***表示連線該靜態庫,lib和.a可省略不寫

有時會加-static引數表示執行時不需要再次鏈結

共享庫同樣需要.o檔案

用.o檔案通過命令 gcc xx.o -fpic -shared  -o libxx.so.xx.xx格式命令生成共享庫。

然後將庫檔案放入/lib或/usr/lib的ld_library_path中

可以使用命令export ld_library_path=.:%ld_library_path

靜態庫與共享庫

編寫使用靜態庫 靜態庫 共享庫 是包含了目標檔案的檔案,這些目標檔案被稱為模板或成員,是可以重用的預編譯 它們以特殊的格式和乙個表或者對映儲存在一起,這個表或者對映將符號名和儲存該符號的成員名字鏈結起來。對映加速了編譯和鏈結過程,靜態庫一般以副檔名.a 代表存檔檔案,archive 命名。為了使用庫...

靜態庫與共享庫

1.靜態庫 所有編譯器都提供一種機制,將所有相關的目標檔案模組兒打包成乙個單獨的檔案,被稱為靜態庫。它可以用作來聯結器的輸入,當聯結器構造乙個輸入的可執行檔案時,它只拷貝靜態庫裡面被應用程式引用的模組兒。在unix 系統中,靜態庫以存檔 一組連線起來的可重定位目標檔案的集合,有乙個頭部來描述成員目標...

靜態庫與共享庫

庫library 靜態庫在編譯連線時就把庫里的 提取出來放入可執行檔案中,程式執行時不再依賴庫。動態庫在編譯連線時只記錄了要用的名字在哪個庫的檔案中,執行時才庫檔案中找這個檔案中名字 函式或變數 並且訪問它 1 靜態庫 歸檔 lib a 1 生成庫 gcc c 1.c 2.c 只編譯不連線,產生.o...