SOGO論壇
  登入   註冊   找回密碼
查看: 462|回覆: 0
列印 上一主題 下一主題

[技術文章] 製作靜態函式庫 [複製連結]

Rank: 11Rank: 11Rank: 11Rank: 11

熱心參予論壇活動及用心回覆主題勳章 數位硬體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-10 10:09:22 |只看該作者 |倒序瀏覽
要製作靜態函式庫,可以透過 ar (archive) 指令加上 –r 參數,將一群目的檔包裝為函式庫,例如,在下一個範例中,我們就用了ar -r lib/libstack.a StackFunc.o StackType.o 這樣一個指令,將StackFunc.o StackType.o這兩個目的檔包裝成 libstack.a 函式庫,放在 lib 資料夾下。然後,在連結的時候,再利用 gcc -o stack.o StackMain.c -lstack -L lib -I inc 這樣的指令,直接連結函式庫。只要懂得利用函式庫,就不需要逐個檔案進行連結了。

您也可以用 ar 指令加上 –tv 參數,檢視函式庫中到底包含了哪些目的檔,甚至可以用 ar 指令加上 –x 參數,將目的檔從函式庫當中取出,以下是 ar 的使用範例。

範例:使用 ar指令建立函式庫

$ ar -r lib/libstack.a StackFunc.o StackType.o        建立 lib/libstack.a 函式庫
ar: creating lib/libstack.a                           

$ gcc -o stack.o StackMain.c -lstack -L lib -I inc    編譯 StackMain.c 並連結 libstack.a 函式庫,
                                                      輸出執行檔stack.o
$ ./stack.o                                           執行 stack.o
x=3                                                   結果輸出 3。

$ ar -tv lib/libstack.a                               顯示函式庫 libstack.a 的內容
rw-r--r-- …略… 30 12:59 2009 StackFunc.o                包含StackFunc.o
rw-r--r-- …略… 30 12:59 2009 StackType.o              
                                                        包含StackType.o                        
$ ar -x lib/libstack.a StackFunc.o                    從lib/libstack.a中取出StackFunc.o
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-13 00:41

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部