linux ar 命令详解
一、作用
對靜態庫進行操作。
二、靜態庫本質是什么
都知道靜態庫是一些功能代碼的集合,連接階段和主程序連接,可以將靜態庫中的代碼融合到主程序中。
那么靜態庫到底是什么呢?實際上,靜態庫就是一堆 .o 文件的集合,準確說法如下:
靜態庫是通過編譯器編譯源代碼文件并將生成的目標文件打包生成后的歸檔文件。
說白了靜態庫就是一個被打包工具打完的包,里面放的就是 .o 文件。
這個打包工具就是 ar,全稱:archiver 。
三、栗子
test.h
#include <stdio.h>void print();test.c
#include "test.h"void print() {printf("hello world!\n"); }main.c
#include "test.h"int main() {print();return 0; }gcc -c test.c
ar rcs libtest.a test.o
gcc -o main main.c -L. -ltest
./main
hello world!
這里我們成功使用了 ar 工具制作了一個靜態庫:libtest.a 。
四、命令解析
1、參數 r :在庫中插入模塊(替換)。
當插入的模塊名已經在庫中存在,則替換同名的模塊。如果若干模塊中有一個模塊在庫中不存在,ar 顯示一個錯誤消息,并不替換其他同名模塊。默認的情況下,新的成員增加在庫的結尾處,可以使用其他任選項來改變增加的位置。
2、參數 c :創建一個庫。
不管庫是否存在,都將創建。
3、參數 s :創建目標文件索引,這在創建較大的庫時能加快時間。
(補充:如果不需要創建索引,可改成大寫 S 參數;如果 .a 文件缺少索引,可以使用 ranlib 命令添加)
4、參數 t :ar t libxxx.a
顯示庫文件中有哪些目標文件,只顯示名稱。
5、參數 v :ar tv libxxx.a
顯示庫文件中有哪些目標文件,顯示文件名、時間、大小等詳細信息。
6、格式:nm -s libxxx.a
顯示庫文件中的索引表。
7、格式:ranlib libxxx.a
為庫文件創建索引表。
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的linux ar 命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: valgrind 详解
- 下一篇: linux / pkg-config 原