溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

靜態(tài)庫打包

發(fā)布時間:2020-07-06 16:38:20 來源:網(wǎng)絡(luò) 閱讀:429 作者:小止1995 欄目:編程語言

靜態(tài)庫(把目標(biāo)文件:二進(jìn)制文件,.o,.a)打包:使用靜態(tài)庫有兩個條件:

  1. 把庫文件包含進(jìn)來

  2. 包含頭文件

注意:庫文件中不能有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)

  1. 代碼保護(hù)(看不到原來代碼)

  2. 維護(hù)成本低

  3. 可在靜態(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(一個路徑下哪個庫)。

向AI問一下細(xì)節(jié)

免責(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)容。

AI