linux环境下归档两个静态库为一个静态库

原创 2012年03月27日 12:23:07

如果在你的项目中有两个工程,分别编译成liba.a和libb.a,这时如果要开放一个新的api库给客户端使用libc.a

但是在libc.a中依赖了liba.a和libb.a,那么发布的时候不可能发布三个库,只能发布一个库libc.a,那么就需要

将liba.a和libb.a打入到libc.a中,可通过如下命令方式来做:

rm libc.a
rm ar.mac
echo CREATE libc.a > ar.mac
echo SAVE >> ar.mac
echo END >> ar.mac
ar -M < ar.mac
ar -q libc.a *.o
echo OPEN libc.a > ar.mac
echo ADDLIB liba.a >> ar.mac
echo ADDLIB libb.a >> ar.mac
echo SAVE >> ar.mac
echo END >> ar.mac
ar -M < ar.mac
rm ar.mac

 

也可以通过编译脚本来定义:

define BUILD_LIBRARY
    $(if $(wildcard $@),@$(RM) $@)
    $(if $(wildcard ar.mac),@$(RM) ar.mac)
    $(if $(filter %.a, $^),
        @echo CREATE $@ > ar.mac 
        @echo SAVE >> ar.mac
        @echo END >> ar.mac
        @$(AR) -M < ar.mac )
    $(if $(filter %.o,$^),@$(AR) -q $@ $(filter %.o, $^))
    $(if $(filter %.a, $^),
        @echo OPEN $@ > ar.mac
        $(foreach LIB, $(filter %.a, $^), @echo ADDLIB $(LIB) >> ar.mac )
        @echo SAVE >> ar.mac
        @echo END >> ar.mac
        @$(AR) -M < ar.mac
        @$(RM) ar.mac )
endef

libc.a:$(OBJS)
    $(BUILD_LIBRARY)

 

相关文章推荐

jsoncpp一个例子(含静态库)

  • 2013年03月01日 17:20
  • 660KB
  • 下载

qrencode 静态库编译环境

  • 2015年12月29日 11:53
  • 2.59MB
  • 下载

Linux环境下静态库的生成和使用 (.a文件)

这一阵子的工作用到了linux,也用到了linux的静态库和动态库。正好对这一块儿一直不明白,趁此机会学习了一下。以下是笔记。先说一说linux下静态库的生成和使用方法。      An arc...

Linux开发环境下的动态库和静态库

1. 什么是库  在 windows 平台和  linux 平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于 windows 和  linux...

Linux环境下动态库和静态库的创建和引用

一、创建库文件: 编辑头文件(.h)和源文件(.c;.cxx)。 生成目标文件: $gcc -c -o 生成静态库文件: $ar cr lib.lib obj_fname_list 例...

Linux环境下静态库的生成和使用 (.a文件)

linux操作系统中: 1.静态库是一些目标文件(后缀名为.o)的集合体而已。 2.静态库的后缀名是.a,对应于windows操作系统的后缀名为.lib的静态库。 3.可以使用ar命令来创建一个...

请问 linux下怎样把几个静态库(libabc.a...)编译成一个动态库(libtest.so)

我用 gcc -shared -fPIC libabc.a libdef.a -o libtest.so   生成的 libtest.so 只有空架子, 没内容, 静态库都是用 ar cru 一批 ...

一个ADS1293的静态库

  • 2015年05月28日 00:10
  • 53KB
  • 下载

linux pthread libc静态库

  • 2013年09月05日 14:02
  • 1.45MB
  • 下载

小心两个共享库共用同一个静态库

小心两个共享库共用同一个静态库.pdf 注:以下内容仅针对Linux/GCC环境,不涵盖Windows,包括Cygwin环境。 下载测试代码:x.zip(和帖子的略不同,x.zip包中的全...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux环境下归档两个静态库为一个静态库
举报原因:
原因补充:

(最多只允许输入30个字)