快速业务通道

Linux下的动态共享链接库的分析与使用

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
x000000006fffffff (VERNEEDNUM) 1

  0x000000006ffffff0 (VERSYM) 0x15b2c

  0x000000006ffffff9 (RELACOUNT) 1190

  0x0000000000000000 (NULL) 0x0

  下面以foo.c和bar.c 文件为例:如何构建动态共享库

  #:~/program$ gcc -fPIC -g -c -o foo.o foo.c

  #~/program$ gcc -fPIC -g -c -o bar.o bar.c

  #:~/program$ gcc -shared -g -Wl,-soname,libfoobar.so.0 -o libfoobar.so.0.0 foo.o bar.o -lc

  #:~/program$ sudo cp libfoobar.so.0.0 /usr/local/lib

  #:~/program$ sudo ldconfig

  #:~/program$ cd /usr/local/lib

  #:/usr/local/lib$ ls

  libfoobar.so.0 libfoobar.so.0.0 python2.6

  #:/usr/local/lib$ ln -sf libfoobar.so.0 libfoobar.so

  ln: creating symbolic link `libfoobar.so'': Permission denied

  #:/usr/local/lib$ sudo ln -sf libfoobar.so.0 libfoobar.so

  #:/usr/local/lib$

  #:~/program$ gcc -g -o foobar main.c -lfoobar

  #:~/program$ ./foobar

  This is foo!library2 is

  foo()=foo

  This is library1 is called

  bar()=bar

  这里的共享库的soname指定为libfoobar.so.0,最终生成的动态共享库文件为libfoobar.so.0.0,foo.o和bar.o是要放到libfoobar.so.0-.0中的目标文件列表,-lc则是libfoobar.so.0.0所依赖的共享库列表,这里只有一个Linux C库被依赖.接着把libfoobar.so.0.0安装到/usr/local/lib目录上去,然后运行ldconfig,同时为了让链接器能够链接上libfoobar.so.0.0,还要创建一个指向libfoorbar.so.0和符号连接.

  这里简要的分析了一下Linux动态共享库的使用,为以后自己的使用做个记录.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号