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