Linux下静态库和动态库的制作与使用.docVIP

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

Linux下静态库和动态库的制作与使用? ? Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。 ? 静态函数库:   这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。 ? 动态函数库:   这类库的名字一般是libxxx.so,动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。而且如果多个应用程序都要使用同一函数库,动态库就非常适合,可以减小应用程序的体积。 ? 下面来介绍linux静态函数库的创建和使用: ?   例程add.h add.c sub.h sub.c main.c: ?   add.h ?   #ifndef ADD_H   #define ADD_H   int add(int x,int y);   #endif ?   add.c ?   #include stdio.h   #include add.h ? int add(int x,int y) {    return (x+y); } -------------------------------------------------------------------- sub.h ?   #ifndef SUB_H   #define SUB_H   int sub(int x,int y);   #endif ?   sub.c ?   #include stdio.h   #include sub.h int sub(int x,int y) {    return (x-y);   } ----------------------------------------------------------------------- main.c ? #include stdio.h   #include sub.h #include add.h ?   int main() { int a,b; a = add(1,2); b = sub(10,5); printf(“a=%d,b=%d\n”,a,b);     return 0;   } -----------------------------------------------------------------------   不管是静态函数库还是动态函数库,都是由*.o目标文件生成。 ? 所以先 gcc -c add.c gcc -c sub.c 生成add.o sub.o ?   静态函数库由ar命令创建 ?   本例:ar -cr libaddsub.a add.o sub.o ?   -c create的意思 ?   -r replace的意思,表示当插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。   到此静态函数库创建完毕。 ?   使用方法:通过gcc -o main main.c -L. -laddsub编译main.c就会把静态函数库整合进main。 ?   其中 ?   -L指定静态函数库的位置供查找,注意L后面还有.,表示静态函数库在本目录下查找。 ?   -l则指定了静态函数库名,由于静态函数库的命名方式是lib***.a,其中的lib和.a忽略。 ?   根据静态函数库的特性,此处删除libaddsub.a后main依然可以运行,因为静态库的内容已经整合进去了。 ?   动态函数库的创建和使用 ? gcc -shared -fpic -o libaddsub.so add.c sub.c ? -fpic:产生位置无关代码 -shared:生成共享库 ? 用上述命令生成libaddsub.so

文档评论(0)

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

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

1亿VIP精品文档

相关文档