<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    一個比較簡單的Linux下制作靜態庫的例子

    發布時間:2009-9-18 17:44    發布者:f.luo
    關鍵詞: Linux , 靜態庫
    看書的時候發現個小例子,感覺不錯。
    分享一下,高手就不用來浪費時間了。
    Linux下如何把自己寫的函數做成靜態編譯庫。
        這個例子中,我們創建了一個我們自己的小小的庫,該庫包含兩個函數。而在例子中,我們使用了其中一個函數。這兩個函數分別為fredbill,作用為打印問候語。
        首先,為每一個函數各創建一個獨立的源程序。建立兩個C文件,分別為fred.c和bill.c簡單看下面的代碼。
    第一個:

    1. #include
    2. void fred(int arg)
    3. {
    4.          printf(“fred: we passed %d\n”,arg);
    5. }
    復制代碼
    第二個:

    1. #include
    2. void bill(char *arg)
    3. {
    4.       printf(“bill: we passed %s\n", arg);
    5. }
    復制代碼
    現在可以編譯這些函數。使用gcc-c參數。編譯:

    1. $ gcc -c bill.c fred.c
    2. $ ls *.o
    3. bill.o      fred.o
    復制代碼
    頭文件為了便于以后調用,編寫個頭文件,文件名為lib.h:
    1. /*
    2. This is lib.h. It declares the functions fred and bill for users
    3. */
    4. void bill(char *);
    5. void fred(int);
    復制代碼


    好了,可以寫主程序了.主程序調用函數bill()。

    1. #include
    2. #include “lib.h”
    3. int main()
    4. {
    5.     bill(Hello World);
    6.     exit(0);
    7. }
    復制代碼
    用到的文件都完成了,下面主要是編譯。
    本文地址:http://www.portaltwn.com/thread-4333-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    f.luo 發表于 2009-9-18 17:44:55
    本帖最后由 f.luo 于 2009-9-18 18:12 編輯

    現在可以進行進行編譯和測試了

    1. $ gcc -c program.c
    2. $ gcc -o program program.o bill.o
    3. $ ./program
    4. bill: we passed Hello World
    5. $
    復制代碼

    沒有錯誤的話應該會輸出

    1. bill:wo passed Hello,World
    復制代碼

    現在創建和使用庫函數

    1. $ ar crv libfoo.a bill.o fred.o
    2. a - bill.o
    3. a - fred.o
    復制代碼

    現在庫函數創建成功,兩個目標函數已經添加成功了
    繼續:

    1. $ ar crv libfoo.a bill.o fred.o
    2. a - bill.o
    3. a - fred.o
    復制代碼

    現在可以使用創建的庫函數進行編譯了
    刪掉原來的program二進制文件

    1. $ gcc -o program program.o libfoo.a
    2. $ ./program
    3. bill: we passed Hello World
    4. $
    復制代碼

    OK,不出錯誤的話應該成功了。
    kendying 發表于 2009-9-22 00:30:40
    受教!
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷