Linux命令之ar - 创建静态库.a文件.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux命令之ar - 创建静态库.a文件

Linux命令之ar - 创建静态库.a文件?第1章用途说明创建静态库.a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。?第2章常用参数格式:arrcs? libxxx.a xx1.o xx2.o参数r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。参数c:创建一个库。不管库是否存在,都将创建。参数s:创建目标文件索引,这在创建较大的库时能加快时间。(补充:如果不需要创建索引,可改成大写S参数;如果.a文件缺少索引,可以使用ranlib命令添加)格式:ar t libxxx.a:显示库文件中有哪些目标文件,只显示名称。?格式:artvlibxxx.a:显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。格式:nm -s libxxx.a:显示库文件中的索引表。格式:ranliblibxxx.a:为库文件创建索引表。?第3章使用示例3.1 示例一在shell脚本中使用Bash代码OS=`uname?-r`??ar?rcs?libhycu.a.$OS?*.o???3.2 示例二在makefile中使用Makefile代码$(BIN1):?$(BIN1_OBJS)??????????ar?rcs?$@?$^???3.3 示例三创建并使用静态库第一步:编辑源文件,test.htest.cmain.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。vi test.htest.cmain.c。第二步:将test.c编译成目标文件:gcc -c test.c,如果test.c无误,就会得到test.o这个目标文件。第三步:由.o文件创建静态库:arrcslibtest.atest.o第四步:在程序中使用静态库:gcc -o main main.c -L. –ltest,因为是静态编译,生成的执行文件可以独立于.a文件运行。第五步:执行:./main?3.4 示例四创建并使用动态库第一步:编辑源文件,test.htest.cmain.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。vitest.htest.cmain.c第二步:将test.c编译成目标文件:gcc -c test.c,前面两步与创建静态库一致。第三步:由.o文件创建动态库文件:gcc -shared -fPIC -o libtest.sotest.o第四步:在程序中使用动态库:gcc -o main main.c -L. –ltest,当静态库和动态库同名时, gcc命令将优先使用动态库。第五步:执行:LD_LIBRARY_PATH=. ./main?3.5 示例五查看静态库中的文件[root@node56 lib]# ar -t libhycu.abase64.c.obinbuf.c.ocache.c.ochunk.c.ocodec_a.c.o...xort.c.o[root@node56 lib]# [root@node56 lib]# ar -tvlibhycu.arw-r--r-- 0/0 7220 Jul 29 19:18 2011 base64.c.orw-r--r-- 0/0 2752 Jul 29 19:18 2011 binbuf.c.orw-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.oGetBase64Value in base64.c.oBase64Dec in base64.c.oencode64 in base64.c.odecode64 in base64.c.ocheck64 in base64.c.otest64 in base64.c.o...chunk_alloc in chunk.c.o[root@node56 lib]#

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档