分类: LINUX
2013-02-23 10:29:22
例如:1.a中有 a.o, b.o 两个目标文件,
ar -t 1.a
a.o
b.o
则,先解压1.a库
ar -xv 1.a
执行完本命令之后,会看到当前目录下就有了,a.o 和 b.o 两个文件。
然后再打包到2.a中,即可。
makefile中可以如此写:(mipsel-linux的编译环境)
AR = mipsel-linux-ar
LIBA = $(my_path)/1.a
LIBXO = $(shell ($(AR) -xv $(LIBA)))
LIBO = $(filter %.o , $(LIBXO))
然后目标编译的位置加载上LIBO就可以了
all: $(OBJS) $(LIBO) ....
command......
rm $(LIBO) #如果不想看到这些.o文件,则,生产2.a之后,直接删除就可以了。
如果想查看LIBA , LIBXO, LIBO的值,可以在makefile中echo输出看看:
LIBA = $(my_path)/a.o $(my_path)/b.o #my_path 当前目录
LIBXO = x - a.o x - b.o
LIBO = a.o b.o
这是比较笨的方法了,如果哪位有更好的方法,烦请联系我,多谢!