新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > linux靜態(tài)庫和動態(tài)庫分析

        linux靜態(tài)庫和動態(tài)庫分析

        作者: 時間:2010-03-27 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/257989.htm

          第3步:由.o文件創(chuàng)建;

          文件名的命名規(guī)范是以lib為前綴,緊接著跟名,擴(kuò)展名為.a。例如:我們將創(chuàng)建的靜態(tài)庫名為myhello,則靜態(tài)庫文件名就是libmyhello.a。在創(chuàng)建和使用靜態(tài)庫時,需要注意這點(diǎn)。創(chuàng)建靜態(tài)庫用ar命令。

          在系統(tǒng)提示符下鍵入以下命令將創(chuàng)建靜態(tài)庫文件libmyhello.a。

          # ar cr libmyhello.a hello.o

          #

          我們同樣運(yùn)行l(wèi)s命令查看結(jié)果:

          # ls

          hello.c hello.h hello.o libmyhello.a main.c

          #

          ls命令結(jié)果中有l(wèi)ibmyhello.a。

          第4步:在程序中使用靜態(tài)庫;

          靜態(tài)庫制作完了,如何使用它內(nèi)部的函數(shù)呢?只需要在使用到這些公用函數(shù)的源程序中包含這些公用函數(shù)的原型聲明,然后在用gcc命令生成目標(biāo)文件時指明靜態(tài)庫名,gcc將會從靜態(tài)庫中將公用函數(shù)連接到目標(biāo)文件中。注意,gcc會在靜態(tài)庫名前加上前綴lib,然后追加擴(kuò)展名.a得到的靜態(tài)庫文件名來查找靜態(tài)庫文件。

          在程序3:main.c中,我們包含了靜態(tài)庫的頭文件hello.h,然后在主程序main中直接調(diào)用公用函數(shù)hello。下面先生成目標(biāo)程序hello,然后運(yùn)行hello程序看看結(jié)果如何。

          # gcc -o hello main.c -L. -lmyhello

          # ./hello

          Hello everyone!

          #

          我們刪除靜態(tài)庫文件試試公用函數(shù)hello是否真的連接到目標(biāo)文件 hello中了。

          # rm libmyhello.a

          rm: remove regular file `libmyhello.a'? y

          # ./hello

          Hello everyone!

          #

          程序照常運(yùn)行,靜態(tài)庫中的公用函數(shù)已經(jīng)連接到目標(biāo)文件中了。

          我們繼續(xù)看看如何在中創(chuàng)建。我們還是從.o文件開始。

          第5步:由.o文件創(chuàng)建文件;

          文件名命名規(guī)范和靜態(tài)庫文件名命名規(guī)范類似,也是在動態(tài)庫名增加前綴lib,但其文件擴(kuò)展名為.so。例如:我們將創(chuàng)建的動態(tài)庫名為myhello,則動態(tài)庫文件名就是libmyhello.so。用gcc來創(chuàng)建動態(tài)庫。

          在系統(tǒng)提示符下鍵入以下命令得到動態(tài)庫文件libmyhello.so。

          # gcc -shared -fPCI -o libmyhello.so hello.o

          #

          我們照樣使用ls命令看看動態(tài)庫文件是否生成。

          # ls

          hello.c hello.h hello.o libmyhello.so main.c

          #

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 开阳县| 绍兴市| 江门市| 吉木乃县| 藁城市| 湟中县| 邵阳县| 白沙| 凌源市| 新巴尔虎左旗| 无为县| 高密市| 宁都县| 万年县| 霍邱县| 武邑县| 雅安市| 平和县| 景德镇市| 卢湾区| 巩留县| 定陶县| 尚义县| 阳山县| 邳州市| 泸水县| 如东县| 米林县| 金湖县| 大姚县| 商都县| 资中县| 兴隆县| 巨野县| 龙州县| 林芝县| 罗平县| 丰都县| 溆浦县| 沙坪坝区| 达孜县|