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