from: http://blog.csdn.net/xljiulong/article/details/7082960
2011-12-19 09:14 5409人阅读 评论(0) 收藏 举报
用途说明
  创建静态库。a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。
  常用参数
  格式:ar rcs  libxxx.a xx1.o xx2.o
  参数r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。【1】
  参数c:创建一个库。不管库是否存在,都将创建。
  参数s:创建目标文件索引,这在创建较大的库时能加快时间。(补充:如果不需要创建索引,可改成大写S参数;如果。a文件缺少索引,可以使用ranlib命令添加)
  格式:ar t libxxx.a
  显示库文件中有哪些目标文件,只显示名称。
  格式:ar tv libxxx.a
  显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。
  格式:nm -s libxxx.a
  显示库文件中的索引表。
  格式:ranlib libxxx.a
  为库文件创建索引表。
  使用示例
  示例一 在shell脚本中使用
  Bash代码
  OS=`uname -r`
  ar rcs libhycu.a.$OS *.o
  示例二 在makefile中使用
  Makefile代码
  $(BIN1): $(BIN1_OBJS)
  ar rcs $@ $^
  示例三 创建并使用静态库
  第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
  vi test.h test.c main.c
  第二步:将test.c编译成目标文件。
  gcc -c test.c
  如果test.c无误,就会得到test.o这个目标文件。
  第三步:由。o文件创建静态库。
  ar rcs libtest.a test.o
  第四步:在程序中使用静态库。
  gcc -o main main.c -L. -ltest
  因为是静态编译,生成的执行文件可以独立于。a文件运行。
  第五步:执行。
  ./main
  示例四 创建并使用动态库
  第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
  vi test.h test.c main.c
  第二步:将test.c编译成目标文件。
  gcc -c test.c
  前面两步与创建静态库一致。
  第三步:由。o文件创建动态库文件。
  gcc -shared -fPIC -o libtest.so test.o
  第四步:在程序中使用动态库。
  gcc -o main main.c -L. -ltest
  当静态库和动态库同名时,gcc命令将优先使用动态库。
  第五步:执行。
  LD_LIBRARY_PATH=. ./main
  示例五 查看静态库中的文件
  [root@node56 lib]# ar -t libhycu.a
  base64.c.o
  binbuf.c.o
  cache.c.o
  chunk.c.o
  codec_a.c.o
  …
  xort.c.o
  [root@node56 lib]#
  [root@node56 lib]# ar -tv libhycu.a
  rw-r--r-- 0/0   7220 Jul 29 19:18 2011 base64.c.o
  rw-r--r-- 0/0   2752 Jul 29 19:18 2011 binbuf.c.o
  rw-r--r-- 0/0  19768 Jul 29 19:18 2011 cache.c.o
  …
  rw-r--r-- 0/0   4580 Jul 29 19:18 2011 xort.c.o
  [root@node56 lib]#
  [root@node56 lib]# nm -s libhycu.a | less
  Archive index:
  Base64Enc in base64.c.o
  GetBase64Value in base64.c.o
  Base64Dec in base64.c.o
  encode64 in base64.c.o
  decode64 in base64.c.o
  check64 in base64.c.o
  test64 in base64.c.o
  …
  chunk_alloc in chunk.c.o
  [root@node56 lib]#

【转】linux ar 命令的使用说明那个和例子的更多相关文章

  1. linux ar 命令的使用说明那个和例子[转]

    用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到.关于Linux下的库文件.静态库.动态库 ...

  2. linux ar 命令的使用

    摘自http://blog.csdn.net/hxg130435477/article/details/8217247 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令 ...

  3. linux ar命令

    当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量.这里介绍命令ar,用来对库操作. 1.ar基本用法 ar ...

  4. Linux ar命令介绍 和常用示例

    制作静态库要用到ar命令,命令格式: ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files... {dmpqrtx}中的 ...

  5. Linux mv 命令的10个实用例子

    当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选.本文中总结了十个Linux mv 命令的实例,希望能给大家带来一些帮助. 初识 mv 命令 mv 命令是一个 ...

  6. linux ar命令参数及用法详解--linux建立、修改或抽取备存文件命

    功能说明:建立或修改备存文件,或是从备存文件中抽取文件. 语 法:ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>] ...

  7. Linux后台命令的使用说明

    1)ctrl+Z:停止当前进程 首先先将一个程序运行起来,这个时候如果你需要去干别的事情,需要暂停运行,可以使用ctrl+Z: user@mine:/opt/user/pytorch-gender$ ...

  8. Linux netstat命令详解和使用例子(显示各种网络相关信息)

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  9. linux ar

    转载:Linux ar命令 | 菜鸟教程 (runoob.com) Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件. ar可让您集合许多文件,成为单一的备存文件.在备存文件中,所 ...

随机推荐

  1. viewport ---移动端详解

    转自---http://www.cnblogs.com/2050/p/3877280.html 移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上 ...

  2. 【BZOJ-1974】auction代码拍卖会 DP + 排列组合

    1974: [Sdoi2010]auction 代码拍卖会 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 305  Solved: 122[Submit ...

  3. Bzoj3510首都

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  4. Android——PULL解析XML

    简介 Android中常常使用XML文件保存用户的APP设置信息.因此需要对XML文件的相关操作进行了解.本文将以<学生信息管理系统>为案例背景进行介绍相关的XML解析的介绍,以及其他相关 ...

  5. python合并2个字典

    2种方式,update()和items()方式 In [14]: a Out[14]: {'a': 1, 'b': 2, 'c': 3} In [15]: c = {'d': 4} In [16]: ...

  6. python模块xlrd安装-处理excel文件必须

    我安装了很久,网上查了很多资料,但都不太适合,综合 了一下,再写一写,希望有用... 官网下载xlrd:官网xlrd下载地址, 真的很难下,我用讯雷,有时候断断续续 下面是我的百度网盘地址,分享出来, ...

  7. JS-window对象集合

    知识点表格截图:

  8. Spring配置文件详解 – applicationContext.xml文件路径

    Spring配置文件详解 – applicationContext.xml文件路径 Java编程                 spring的配置文件applicationContext.xml的默 ...

  9. Extjs GridPanel用法详解

    Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPa ...

  10. nginx 学习笔记(9) 配置HTTPS服务器--转载

    HTTPS服务器优化SSL证书链合并HTTP/HTTPS主机基于名字的HTTPS主机带有多个主机名的SSL证书主机名指示兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定 ...