zoukankan      html  css  js  c++  java
  • linux和MAC下静态库.a文件合并

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

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

    我在MAC OS下尝试了一下。

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

    5235392 Sep 17 15:50 libavcodec.a
    1017032 Sep 17 15:50 libavformat.a
     183528 Sep 17 15:50 libavutil.a
     232536 Sep 17 15:50 libswscale.a
        204 Sep 17 15:50 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--  1 gyc  staff  6070496 Sep 18 16:02 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--  1 gyc  staff  6070496 Sep 18 16:05 libffmpeg.a

    提示:

    1.

    --enable-pic  build position-independent code

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

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

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

  • 相关阅读:
    EC中的QEvent
    Host是如何与EC通信的
    Python随笔之元组
    Vuex的基本使用
    运行新项目时先在项目目录下运行下面代码,安装依赖node_modules
    前端代码编辑时要注意大小写
    vue3.0的setup函数的使用
    angular写的一个导航栏
    Java数组的工具类
    eclipse格式化代码快捷键失效
  • 原文地址:https://www.cnblogs.com/zzugyl/p/3328628.html
Copyright © 2011-2022 走看看