輕松學(xué)會(huì)Linux動(dòng)態(tài)庫知識(shí)
目前,Linux系統(tǒng)越來越受到電腦用戶的歡迎,于是很多人開始學(xué)習(xí)Linux時(shí),在這期間,你可能會(huì)遇到Linux動(dòng)態(tài)庫的編寫的知識(shí),這里將介紹Linux動(dòng)態(tài)庫的編寫知識(shí),希望能學(xué)會(huì)。
四、動(dòng)態(tài)庫的編寫
1、概述
動(dòng)態(tài)庫一般以.so結(jié)尾,就是shared object的意思.
其基本生成步驟為
⑴編寫函數(shù)代碼
⑵編譯生成動(dòng)態(tài)庫文件,要加上 -shared 和 -fpic 選項(xiàng) , 庫文件名以lib開頭, 以.so 結(jié)尾。
使用方式分為兩種: 隱式調(diào)用和顯示調(diào)用
隱式調(diào)用類似于靜態(tài)庫的使用,但需修改動(dòng)態(tài)鏈接庫的配置文件/etc/ld.so.conf;顯示調(diào)用則是在主程序里使用dlopen、dlsym、dlerror、dlclose等系統(tǒng)函數(shù)。具體的調(diào)用方式會(huì)在 "五、動(dòng)態(tài)庫的調(diào)用" 中詳細(xì)說明.
2、編寫最簡(jiǎn)單的動(dòng)態(tài)庫文件
為了便于對(duì)照, 我們?nèi)匀徊捎渺o態(tài)庫中的文件做例子.
編寫如下兩個(gè)文件,注意放在同一目錄中
- myalib.h//靜態(tài)庫頭文件
- myalib.c//靜態(tài)庫實(shí)現(xiàn)文件
- //myalib.h 文件的內(nèi)容
- void test();
- //myalib.c 文件的內(nèi)容
- #inlcude <stdio.h>
- void test()
- {
- printf("test\n");
- }
3、編譯生成動(dòng)態(tài)庫 ,庫文件名以lib開頭, 以.so 結(jié)尾。
gcc -fpic -shared -o libtest.so myalib.c
此時(shí)就生成一個(gè)libtest.so文件,以上就是Linux動(dòng)態(tài)庫的編寫的知識(shí)。
【編輯推薦】