ar 命令简介ar命令可以用来创建、修改库,也可以从库中提出单个模块。常用命令主要是打 包、解包和列包内容: 打包可用如下命令: ar cq libxxx.a xxx.o 解包可用如下命令: ar x libxxx.a 列举包内容可用命令: ar t libxxx.a 例解生成静态库库文件 foo.c 和 fun.c
/*foo.c */
#include <stdio.h>
void fun1 ()
{
printf ("I am fun1. \n");
}
void fun2 ()
{
printf ("I am fun2. \n");
}
/* fun.c */
#include <stdio.h>
void fun3 ()
{
printf ("I am fun3.\n");
}
void fun4 ()
{
printf ("I am fun4. \n");
}
主函数 main.c
#include "foo.h"
int main()
{
fun1 ();
fun2 ();
fun3 ();
}
Makefile
CC = gcc
AR = ar
COBJS = fun foo
TARGET_LIB = libf.a
TARGET_TEST = main
TEST_SRC = main.c
TEST_OBJ = main.o
TMPFILE = objlist
all:$(TARGET_LIB) $(TARGET_TEST)
$(TARGET_LIB):DecompressAr
$(AR) cq $@ $(shell cat $(TMPFILE))
DecompressAr:
$(foreach n,$(COBJS),$(AR) t lib$(shell basename $(n)).a >> $(TMPFILE);)
$(foreach n,$(COBJS),$(AR) x lib$(shell basename $(n)).a;)
$(TEST_OBJ):$(TEST_SRC)
$(CC) -c $(TEST_SRC)
$(TARGET_TEST):$(TARGET_LIB) $(TEST_OBJ)
$(CC) -o $(TARGET_TEST) $(TEST_OBJ) $(TARGET_LIB)
clean:
rm -f *.o $(TARGET_TEST) $(TMPFILE) $(TARGET_LIB)
SeeAlso |