Linux 下創建和使用靜態庫


Linux 下使用 ar 工具(Windows 下vs使用lib.exe,將目標文件壓縮到一起,並且對其進行編號和索引,以便於查找和檢索),創建步驟如下圖所示:

Linux 下靜態庫命名規范, lib[your_library_name].a,其中lib為前綴,中間是靜態庫名,后綴名是 .a

1. 將源文件編譯成目標文件 .o (假設源文件為 Math.cpp)

 g++  -c  Math.cpp   執行此命令后,便會生成 Math.o 目標文件

2. 然后用 ar 工具將目標文件打包成 .a 靜態庫文件

ar  -crv  libmath.a  Math.o  執行此命令后,便會生成 libmath.a 靜態庫

3. 使用該靜態庫

g++  test.cpp -L./  -lmath  

-L:指定該靜態庫的路徑

-l:指定鏈接時需要的庫(編譯器在查找鏈接庫時,有隱含的命名規則,即在給出的名字前面加上 lib ,在后面加上 .a 或 .so 來確定庫的名稱,所以,我們只需要在-l后面加上 該靜態庫的名字就行)

其中,-L和-l后面可以沒有空格,有空格也是可以的

 

通過上面簡單的介紹,我們知道 靜態庫 可以達到代碼的復用,那為什么還引入動態庫呢?

靜態庫的缺陷:

(1)空間浪費

(2)靜態庫對程序的更新,部署和發布也會帶來麻煩,如果某個靜態庫更新了,所有使用它的應用程序都需要重新編譯,發布給用戶(對於玩家,只是一個很小的改動,卻導致整個程序重新下載,很麻煩)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM