您好,登錄后才能下訂單哦!
靜態(tài)庫(把目標(biāo)文件:二進(jìn)制文件,.o,.a)打包:使用靜態(tài)庫有兩個條件:
把庫文件包含進(jìn)來
包含頭文件
注意:庫文件中不能有main函數(shù)
Linux中,靜態(tài)鏈接庫以.a結(jié)尾,動態(tài)鏈接庫以.so結(jié)尾。
windows中,靜態(tài)鏈接庫以.lib結(jié)尾,動態(tài)鏈接庫以.dll結(jié)尾。
靜態(tài)庫打包主要是把多個.o文件生成鏈接文件,有以下優(yōu)點(diǎn)
代碼保護(hù)(看不到原來代碼)
維護(hù)成本低
可在靜態(tài)庫設(shè)置保護(hù)期(eg:獲取當(dāng)前時間和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命令。
下來就可以使用該靜態(tài)庫了,新建一個目錄,拷貝libmyset.a和comm.h文件到此目錄下,這是使用靜態(tài)庫的兩個條件。但現(xiàn)在還是找不到庫文件,引文我們平常使用時連接的時候系統(tǒng)文件在環(huán)境變量PATH中定義路徑,所以可以找到。接下來,修改Makefile文件添加-I/lib(可找到頭文件) -L/lib(搜索路徑) -lmyset(一個路徑下哪個庫)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。