最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C語(yǔ)言如何制作庫(kù)文件

2023-05-05 22:40 作者:秋名山西  | 我要投稿

庫(kù)是一組預(yù)先編譯好的函數(shù)的集合,這些函數(shù)都是按照可重用的原則編寫的。標(biāo)準(zhǔn)庫(kù)的存放位置為/lib/或者usr/lib目錄中。

庫(kù)文件的命名:總是以lib開頭,隨后的部分指明是什么庫(kù),例如libc是c庫(kù),libm是數(shù)學(xué)庫(kù)等。文件名的最后部分以.開始,然后給出庫(kù)文件的類型:

.a:表示傳統(tǒng)的靜態(tài)函數(shù)庫(kù)

.so:代表共享函數(shù)庫(kù)

這條命令要求編譯文件fred.c,將編譯產(chǎn)生的文件名命名為fred,并且除了搜索標(biāo)準(zhǔn)的C語(yǔ)言函數(shù)庫(kù)外,還要搜索數(shù)學(xué)庫(kù)libm.a解決函數(shù)引用問題。雖然函數(shù)庫(kù)文件存放在標(biāo)準(zhǔn)的路徑之下,但是也可以使用-L為編譯器指明需要增加的函數(shù)庫(kù)搜索路徑。

這條命令用/usr/openwin/lib目錄中的libx11庫(kù)來(lái)編譯和鏈接程序x11fred.

即:

上文所說的-lx11,指的就是需要依賴libx11庫(kù)。使用-l(小寫L)的形式的好處是:如果動(dòng)態(tài)庫(kù)存在的情況下,會(huì)優(yōu)先使用動(dòng)態(tài)庫(kù)。


靜態(tài)庫(kù):

靜態(tài)庫(kù)也稱為歸檔文件:archive,按照慣例這種類型的文件都以.a結(jié)尾。

創(chuàng)建靜態(tài)庫(kù)文件分三步:

1、分別創(chuàng)建為每一個(gè)函數(shù)創(chuàng)建一個(gè)源文件。

2、使用gcc -c 命令將源文件編譯成為.o文件,因?yàn)榇藭r(shí)的兩個(gè)源文件并不能組成程序。

3、檢查兩個(gè)源文件準(zhǔn)確無(wú)誤后,使用下列命令對(duì)其進(jìn)行打包:

xxx.o表示需要打包的.o文件,可以是多個(gè)。

4、為庫(kù)文件生成內(nèi)容表

這樣,庫(kù)文件就能正常使用了。


靜態(tài)庫(kù)的缺點(diǎn):

多個(gè)運(yùn)行中的應(yīng)用程序同事使用同一個(gè)函數(shù)庫(kù)的函數(shù)時(shí),內(nèi)存中就會(huì)存在同一函數(shù)的多個(gè)副本,而且在程序文件自身中也同時(shí)存在多份同樣的副本,這將消耗大量寶貴的內(nèi)存和磁盤空間。

共享庫(kù)

共享庫(kù)的保存位置與靜態(tài)庫(kù)是一樣的,但共享庫(kù)有不同的文件名后綴。當(dāng)一個(gè)程序使用共享庫(kù)時(shí),他的鏈接方式是這樣的:

程序本身不再包含函數(shù)代碼,而是引用運(yùn)行時(shí)可訪問的共享代碼。當(dāng)編譯好的程序被裝載到內(nèi)存中執(zhí)行時(shí),函數(shù)引用被解析并產(chǎn)生對(duì)共享庫(kù)的調(diào)用,如果有必要,共享庫(kù)才會(huì)被加載到內(nèi)存中。

通過這種方式,系統(tǒng)可以只保留共享庫(kù)的一份副本供許多應(yīng)用程序同時(shí)使用,并且在磁盤上也保留一份,另一份的好處是共享庫(kù)的更新可以獨(dú)立于依賴他的應(yīng)用程序。

C語(yǔ)言如何制作庫(kù)文件的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永康市| 苍南县| 仪征市| 济阳县| 江达县| 五原县| 天柱县| 锦州市| 建德市| 乐山市| 瑞丽市| 察雅县| 高碑店市| 苍南县| 奉节县| 保亭| 扎鲁特旗| 克山县| 潢川县| 本溪| 新源县| 和田县| 白沙| 渭源县| 和硕县| 同心县| 襄汾县| 北碚区| 南江县| 苍梧县| 郧西县| 永新县| 云和县| 颍上县| 宿迁市| 金华市| 延寿县| 沧州市| 德钦县| 桃源县| 方正县|