PHP套模板做網(wǎng)站他達(dá)拉非什么是
基礎(chǔ)知識:動vs靜
類型 | 動 | 靜 |
---|---|---|
加載時機(jī) | 運行時 | 編譯時 |
可復(fù)用性 | 多個文件只需要加載一份庫文件 | 每個文件都需要加載一份文件 |
性能 | 鏈接次數(shù)越多越有優(yōu)勢 | 鏈接次數(shù)越少越有優(yōu)勢 |
代碼編寫
靜態(tài)庫
生成靜態(tài)庫
libmath.a:add.o sub.oar -rc $@ $^%.o:%.cgcc -c $<
使用靜態(tài)庫
頭文件和工作目錄同目錄
- 將
頭文件,庫文件
放到文件需要使用的目錄下
#include<stdio.h>
#include"add.h"
#include"sub.h"int main()
{printf("%d\n",add(1,2));printf("%d\n",sub(1,2));return 0;
}
頭文件放到工作目錄下
2. 指明庫文件的位置
頭文件和工作目錄不同目錄
只要能指明頭文件路徑就可以使用
#include<stdio.h>
#include"dy/add.h"
#include"dy/sub.h"int main()
{printf("%d\n",add(1,2));printf("%d\n",sub(1,2));return 0;
}
動態(tài)庫
生成動態(tài)庫
libmath.so:add.o sub.ogcc -shared -o $@ $^%.o:%.c# gcc -c $^ -o $@gcc -fPIC -c $<
fPIC
與位置無關(guān)碼
使用動態(tài)庫
- 將
頭文件,庫文件
放到文件需要使用的目錄下 - 生成可執(zhí)行文件
原因解釋
-I(大寫i)——如果頭文件不在目錄下,會報錯;這個命令告訴編譯器頭文件位置
-L——庫文件位置
-l(小寫L)——庫文件名稱
直接寫明是告訴編譯器怎么做,在運行的時候是告訴系統(tǒng)庫文件的位置——需要在系統(tǒng)上設(shè)置庫文件的位置
指明庫文件位置的方法
- 直接將
頭文件+庫文件
添加進(jìn)系統(tǒng)目錄
下
頭文件
——/usr/include/
庫文件
——/lib64
- 在
系統(tǒng)目錄
下添加軟鏈接
ln -s 目標(biāo)庫文件 新增軟連接
修改LD_LIBRARY_PATH
變量
unset
刪除變量內(nèi)容—— unset PATH
使用:
將地址進(jìn)行分割
export
設(shè)置環(huán)境變量—— export PATH=…
- 在
/etc/ld.so.conf.d/
目錄下創(chuàng)建文件
——永久有效
使用
ldconfig
進(jìn)行刷新,必要時使用sudo
參考文件
動靜態(tài)庫性能