linux下的靜態庫

2021-09-02 05:05:36 字數 813 閱讀 7081

linux下檔案的字尾名只是為了方便程式設計師知道這是什麼型別的檔案,不用來識別檔案型別。

其中.so檔案(shared object)是動態庫(共享庫),相當於windows下的.dll

.a檔案是(archive)歸檔包(靜態庫),由多個.o檔案打包而來,相當於windows下的.lib

.o檔案是原始碼經過預處理、編譯、彙編後的檔案,只差鏈結。

編譯過程

源**   ->    預處理   ->   編譯   ->   彙編   ->   鏈結   ->   目標**

.c/.cpp                     .i                .s                .o                   .so/.a/.out      linux

g++ -e           g++ -s      g++ -c                                       g++命令

靜態庫的命名規則和動態庫類似為 lib***.a   即 lib + 庫名 + .a

動態庫的優點是便於公升級庫,且所有程式只拷貝乙份動態庫,缺點是執行程式需要有相應的庫環境。

生成靜態庫

1.寫乙個***.cpp和***.h以及測試程式test.cpp

2.編譯***.cpp      g++ ***.cpp -c -o ***.o

3.生成靜態庫     ar crv lib***.a  ***.o         (有多個.o檔案就加在後面)

4.編譯test.cpp並鏈結靜態庫         g++ test.cpp -l. -l*** -o test

Linux下靜態庫編譯

linux下動態庫檔案的擴充套件名為 so shared object 按照約定,所有動態庫檔名的形式是libname.so 可能在名字中加入版本號 這樣,執行緒函式庫被稱作libthread.so。靜態庫的檔名形式是libname.a。共享archive的檔名形式是libname.sa。共享arc...

Linux下的動態庫和靜態庫

靜態庫 程式編譯時載入,可執行程式體積大。一般命名為lib x.a。動態庫 程式執行時載入,可執行程式體積小。一般命名為lib x.so.1.3。x一般指庫名,如libxml2 tinyxml等 動態庫一般預設安裝在 lib 或者 usr lib 或者 usr local lib下。如果安裝的庫不在...

linux下的動態庫和靜態庫

1 使用gcc建立和使用靜態庫 1 gcc o mylib.o c mylib.c 生成o檔案 2 ar rcs libmylib.a mylib.o 生成a檔案 c create的意思 r replace的意思,表示當插入的模組名已經在庫中存在,則替換同名的模組。3 cp libmylib.a u...