靜態庫(把目標文件:二進制文件,.o,.a)打包:使用靜態庫有兩個條件:
把庫文件包含進來
包含頭文件
注意:庫文件中不能有main函數
Linux中,靜態鏈接庫以.a結尾,動態鏈接庫以.so結尾。
windows中,靜態鏈接庫以.lib結尾,動態鏈接庫以.dll結尾。
靜態庫打包主要是把多個.o文件生成鏈接文件,有以下優點
代碼保護(看不到原來代碼)
維護成本低
可在靜態庫設置保護期(eg:獲取當前時間和2019年比較,若大于則退出)
Makefile的書寫:
1 .PHONY:libmysem.a 2 libmysem.a:comm.o 3 ar rcs $@ $^ 4 comm.o:comm.c 5 gcc -c $< 6 .PHONY:clean 7 clean: 8 rm -f libmyset.a comm.o
$<表示把依賴也表文件一個個拿出來給gcc -c命令。
下來就可以使用該靜態庫了,新建一個目錄,拷貝libmyset.a和comm.h文件到此目錄下,這是使用靜態庫的兩個條件。但現在還是找不到庫文件,引文我們平常使用時連接的時候系統文件在環境變量PATH中定義路徑,所以可以找到。接下來,修改Makefile文件添加-I/lib(可找到頭文件) -L/lib(搜索路徑) -lmyset(一個路徑下哪個庫)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。