<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          linux靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)分析

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

          本文引用地址:http://www.ex-cimer.com/article/257989.htm

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

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

            在系統(tǒng)提示符下鍵入以下命令將創(chuàng)建靜態(tài)庫(kù)文件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)庫(kù);

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

            在程序3:main.c中,我們包含了靜態(tài)庫(kù)的頭文件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)庫(kù)文件試試公用函數(shù)hello是否真的連接到目標(biāo)文件 hello中了。

            # rm libmyhello.a

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

            # ./hello

            Hello everyone!

            #

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

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

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

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

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

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

            #

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

            # ls

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

            #

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


          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();