Linux下的动态共享链接库的分析与使用
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |