UNIX的ar命令

來源:互聯網
上載者:User

UNIX的ar命令
常用選項

原始碼檔案在編譯之後產生相應的目標檔案(.o檔案),通常製作靜態庫的過程就是將這些.o檔案打包成一個libXXXX.a檔案。
ar命令常用的幾個命令選項的含義如下:

-r格式:ar -r libXXXX.a 1.o 2.o說明:lib檔案不存在時,首先建立lib檔案,然後將.o檔案添加到靜態庫檔案中 -t格式:ar -t libXXXX.a說明:展示當前lib檔案中所包含的.o檔案 -d格式:ar -d libXXXX.a 1.o說明:將1.o從靜態庫檔案libXXXX.a中刪除 -x格式:ar -x libXXXX.a說明:將靜態庫檔案libXXXX.a中的所有檔案解壓出來 現在我們編輯兩個.c檔案,分別如下。1.c #include<stdio.h>
void func1() {
 printf("call func1.\n");
}

//2.c

#include<stdio.h>
void func2() {
 printf("call func2.\n");
}

做如下操作:

[linux@www.bkjia.com ar]$ ls
1.c  2.c
[linux@www.bkjia.com ar]$ gcc -c 1.c 2.c
[linux@www.bkjia.com ar]$ ls
1.c  1.o  2.c  2.o
[linux@www.bkjia.com ar]$ ar -r libtest.a 1.o
ar: creating libtest.a
[linux@www.bkjia.com ar]$ ar -r libtest.a 2.o
[linux@www.bkjia.com ar]$ ar -t libtest.a
1.o
2.o
[linux@www.bkjia.com ar]$ ar -d libtest.a 1.o
[linux@www.bkjia.com ar]$ ar -t libtest.a
2.o
[linux@www.bkjia.com ar]$ ar -r libtest.a 1.o
[linux@www.bkjia.com ar]$ rm -rf 1.o 2.o
[linux@www.bkjia.com ar]$ ls
1.c  2.c  libtest.a
[linux@www.bkjia.com ar]$ ar -x libtest.a
[linux@www.bkjia.com ar]$ ls
1.c  1.o  2.c  2.o  libtest.a

特別用法特別說明的是ar命令的-s用法.舊版本UNIX作業系統在使用ar添加一個.o檔案,如果相同名字的.o檔案已經存在於靜態庫,將替換這個.o檔案,否則就簡單的將這個.o檔案尾碼在靜態庫檔案的末尾.接著在使用ld進行連結時,可能還會報無法找到函數或者全域變數的錯誤。這是由於靜態庫檔案中的符號索引表資訊並沒有更新,依舊使用的是舊的.o檔案的符號表資訊。為了克服這個問題,提供了ranlib工具,進行符號表的更新,所以通常在一些版本比較老的UNIX程式的Makefile中通常能看到這樣的命令:libXXXX.a: 1.o 2.o ...ar -rv libXXXX.a 1.o 2.o ...ranlib libXXXX.a新版本的ar命令預設會更新符號表,因此不再需要使用ranlib來更新了。因為預設時符號表會被更新,所以 ar -rsv和ar -rv的功能是一樣的.可以使用nm命令來查看libXXXX.a中的符號表資訊。比如:

[linux@www.bkjia.com ar]$ nm -s libtest.a

Archive index:
func1 in 1.o
func2 in 2.o

1.o:
0000000000000000 T func1
                U puts

2.o:
0000000000000000 T func2
                U puts
[linux@www.bkjia.com ar]$

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.