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)

 

windows 、linux 下 多个静态库合并成一个静态库

第一步、 打开visual studio 下的对应平台命令行工具 第二步、 执行lib命令 lib /OUT:ETKey.lib A.lib B.lib ,完毕linux 下的合成库 Lin...
  • jsa158
  • jsa158
  • 2016年08月28日 21:08
  • 703

linux编程合并多个静态库.a为一个.a

.a 文件的结构和.tar文件就没有什么区别。 x 命令解出来, a 命令添加, t命令列表 假设A.a, B.a C.a 在/usr/local/lib目录下 mkdir /tmp/li...
  • seebit
  • seebit
  • 2014年05月31日 16:59
  • 3096

Linux下静态库的生成以及使用实例图解

linux下面静态库的编译和使用
  • Linux_ever
  • Linux_ever
  • 2015年12月08日 21:11
  • 711

Unix高级编程:环境变量、静态库、动态库制作和使用、gdb调试工具

判断电脑大端小端 (内存地址默认从低地址到高地址) 方法 1. short var_a = 0x0001;char *var_p = &var_a;如果var_p是1,则为小端 方法 2. uni...
  • sinat_36184075
  • sinat_36184075
  • 2017年01月14日 21:34
  • 205

在ubuntu系统下编译ffmpeg的静态库

在ubuntu上配置ffmpeg的开发环境,参考:http://blog.csdn.net/leechee_1986/article/details/41891119 到ffmpeg官网下载ffmp...
  • Bobsweetie
  • Bobsweetie
  • 2016年03月11日 15:53
  • 1111

linux中如何将多个静态库合并成一个

  • jiaoyongqing134
  • jiaoyongqing134
  • 2017年02月28日 14:12
  • 368

linux下 编译和使用静态库

创建并使用静态库 第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。 vi...
  • xuplus
  • xuplus
  • 2016年07月29日 15:51
  • 5265

链接一个静态库到另一个静态库

问题:有两个静态库a.lib和b.lib,静态库x.lib使用a.lib和b.lib,x.lib相当于提供了一个输出库,应用程序app.exe使用x.lib。那么,应用程序app当然需要连接到静态库x...
  • u012487272
  • u012487272
  • 2013年12月28日 08:54
  • 1758

多个静态库合并

这个方法适合下面的问题 合并多个静态库。静态库的多级依赖。静态库级联调用,导致链接错误。。。。。。。 第一步:生成静态库文件 echo CREATE lib-static.a...
  • lv_xinmy
  • lv_xinmy
  • 2014年02月20日 18:59
  • 2829

学习笔记:多个静态库连接成一个动态库例子

目标: 将多个静态库链接为一个动态库,提供统一的接口给外部使用。 看一下例子的目录文件: 编译后将生成 libAdd.a libMutiply.a , 然后将这两个.a静态库和apl_myApi....
  • u010312436
  • u010312436
  • 2016年09月10日 11:37
  • 1295
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux环境下归档两个静态库为一个静态库
举报原因:
原因补充:

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