这两天开发群了讨论了一个文体,如何合并众多的.a文件。

有人给了建议,使用ar 解.a,生成.o。然后合并所有的.o文件。

我在MAC OS下尝试了一下。

正好赶上编译了ffmpeg的IOS armv7版本,生成了armv7/lib/

 Sep  : libavcodec.a
Sep : libavformat.a
Sep : libavutil.a
Sep : libswscale.a
Sep : pkgconfig

使用ar命令,将这四个.a文件都解出.o文件

ar x libavcodec.a
ar x libavformat.a
ar x libavutil.a
ar x libswscale.a

然后ls 就可以看出,生成了很多.o文件。
下一步来合并.o文件,命令如下

ar cru libffmpeg.a *.o

别忘了还有ranlib命令,更新库的符号表

 ranlib libffmpeg.a 

最后,看一下使用ranlib后,文件MD5确实不一样了。

mikumatoMac-mini:lib gyc$ ll libffmpeg.a
-rw-r--r-- gyc staff Sep : libffmpeg.a
mikumatoMac-mini:lib gyc$ md5 libffmpeg.a
MD5 (libffmpeg.a) = b988179f58e87888fba85fb5038cb9a2
mikumatoMac-mini:lib gyc$ ranlib libffmpeg.a
ranlib: file: libffmpeg.a(os_support.o) has no symbols
mikumatoMac-mini:lib gyc$ md5 libffmpeg.a
MD5 (libffmpeg.a) = d08086ad81679287c3e27af69f354607
mikumatoMac-mini:lib gyc$ ll libffmpeg.a
-rw-r--r-- gyc staff Sep : libffmpeg.a

提示:

1.

--enable-pic  build position-independent code

windows下dll或者dll和exe,也有合并的方法,ILMerge

http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

但是,我尝试过,并没有得到较好的结果。原因有待以后查明。

linux和MAC下静态库.a文件合并的更多相关文章

  1. Linux下静态库生成和使用

    Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. ...

  2. linux下静态库和动态库一些东西

    http://www.cnblogs.com/changefuture/archive/2011/12/22/2297460.html Linux  动态链接库和静态库示例 文件预览 文件目录树如下, ...

  3. zt:我使用过的Linux命令之ar - 创建静态库.a文件

    我使用过的Linux命令之ar - 创建静态库.a文件 本文链接:http://codingstandards.iteye.com/blog/1142358    (转载请注明出处) 用途说明 创建静 ...

  4. iOS中静态库-.a文件生成和使用

    最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...

  5. linux中C的静态库和动态库分析

    从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...

  6. Windows下静态库与动态库的创建与使用

    Windows下静态库与动态库的创建与使用 学习内容:本博客介绍了Windows下使用Visual C++ 6.0制作与使用静态库与动态库的方法. --------CONTENTS-------- 一 ...

  7. iOS 打包静态库.a文件(真机版 + 虚拟机)

    我们以打包IOS开发中封装的高地地图基础功能包 GDMap为例. 1>我们需要准备好需要打包的GDMap     2>接下来我们开始新建一个工程文件取名GDMap     3>删掉无 ...

  8. Windows下静态库的制作与使用

    参考 静态链接 VS 动态链接 静态库 VS 动态库 实验环境 OS:Windows10 企业版 IDE:Visual Studio 2017旗舰版 前言 静态链接库与动态链接库都是共享代码的方式,如 ...

  9. iOS静态库.a文件制作和导入使用

    iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...

随机推荐

  1. websphere6.1安装与配置

    http://www.blogjava.net/103335460/articles/220935.html 一.本人开发环境: jdk1.5.0_11 , eclipse3.2 , MyEclips ...

  2. 【Error listenerStart】 Error listenerStart Context [] startup failed due to previous errors

    发给 报错信息 八月 12, 2015 11:58:19 上午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandle ...

  3. asp.net mvc 事务处理:Transactions

    1.在控制器里引用using System.Transactions; 2.在你需要事务回滚的地方外面套一层using (TransactionScope sc = new TransactionSc ...

  4. 重置mysql密码

    如何修改mysql root密码 忘记MySQL ROOT密码是在MySQ使用中很常见的问题,可是有很多朋友并不会重置ROOT密码,那叫苦啊,特写此文章与大家交流: 1.编辑MySQL的配置文件:my ...

  5. PHP glob() 函数

    定义和用法 glob() 函数返回匹配指定模式的文件名或目录. 该函数返回一个包含有匹配文件 / 目录的数组.如果出错返回 false. 语法 glob(pattern,flags) 参数 描述 fi ...

  6. POJ 2195 Going Home(最小费用最大流)

    http://poj.org/problem?id=2195 题意 :  N*M的点阵中,有N个人,N个房子.让x个人走到这x个房子中,只能上下左右走,每个人每走一步就花1美元,问当所有的人都归位了之 ...

  7. LINUX关闭防火墙(转载)

    (1) 重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off (2) 即时生效,重启后失效: 开启:service iptables ...

  8. [wikioi]二叉树最大宽度和高度

    简单的DFS,用数组w记录每一层的宽度就行了,就是遇到一层就++.中间发现在C++里面,如果int未初始化就是用也是有异常的.还有二叉树的数组表示时,从1开始计数会比较好.还有后来学会了数组这样的初始 ...

  9. JavaScript实现命令行交互

    原文地址: http://www.cnblogs.com/liaoyu/p/js-terminal.html 周末闲着想试试用 JavaScript 模拟命令行交互的功能,希望达到的几个功能点如下: ...

  10. 自定义的IntentFileter 无法找到activity

    <intent-filter > <action android:name="com.leo.enjoytime.VIEW"/></intent-fi ...