新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > linux靜態庫和動態庫分析

        linux靜態庫和動態庫分析

        作者: 時間:2010-03-27 來源:網絡 收藏

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

          第3步:由.o文件創建;

          文件名的命名規范是以lib為前綴,緊接著跟名,擴展名為.a。例如:我們將創建的靜態庫名為myhello,則靜態庫文件名就是libmyhello.a。在創建和使用靜態庫時,需要注意這點。創建靜態庫用ar命令。

          在系統提示符下鍵入以下命令將創建靜態庫文件libmyhello.a。

          # ar cr libmyhello.a hello.o

          #

          我們同樣運行ls命令查看結果:

          # ls

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

          #

          ls命令結果中有libmyhello.a。

          第4步:在程序中使用靜態庫;

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

          在程序3:main.c中,我們包含了靜態庫的頭文件hello.h,然后在主程序main中直接調用公用函數hello。下面先生成目標程序hello,然后運行hello程序看看結果如何。

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

          # ./hello

          Hello everyone!

          #

          我們刪除靜態庫文件試試公用函數hello是否真的連接到目標文件 hello中了。

          # rm libmyhello.a

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

          # ./hello

          Hello everyone!

          #

          程序照常運行,靜態庫中的公用函數已經連接到目標文件中了。

          我們繼續看看如何在中創建。我們還是從.o文件開始。

          第5步:由.o文件創建文件;

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

          在系統提示符下鍵入以下命令得到動態庫文件libmyhello.so。

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

          #

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

          # ls

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

          #

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


        關鍵詞: 靜態庫 Linux 動態庫

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 屏东县| 吕梁市| 山西省| 阳高县| 望谟县| 邢台市| 吕梁市| 泾阳县| 平凉市| 武汉市| 同江市| 临漳县| 璧山县| 团风县| 页游| 宜宾县| 宁城县| 呈贡县| 珲春市| 香格里拉县| 陇南市| 南平市| 巴塘县| 双江| 包头市| 临清市| 衡东县| 雅江县| 红原县| 临漳县| 方正县| 新密市| 上饶县| 舞钢市| 修武县| 安图县| 闻喜县| 通江县| 上林县| 开鲁县| 丹凤县|