当前位置:首页 > 操作系统 > Linux

LInux中共享库的嵌套调用例子

亲测成功!
参考网址:
嵌套例程:https://my.oschina.net/moooofly/blog/506466.html
linux找不到动态链接库 .so文件的解决方法https://www.cnblogs.com/xudong-bupt/p/3698294.html
Linux共享库、静态库、动态库详解:
https://www.cnblogs.com/sunsky303/p/7731911.html

新建一个test测试文件夹,并在这个文件夹内新建一些文件:

技术分享图片

vim hello.cpp
技术分享图片

vim hello.h
技术分享图片

vim usehello.cpp
技术分享图片

vim usehello.h
技术分享图片

1.编译动态链接库

gcc -o hello.so -fpic -shared  -I.   hello.cpp
ls
ldd hello.so

技术分享图片

gcc -o usehello.so -fpic -shared  -I. -Wl,-rpath=/home/yzw/test  usehello.cpp  hello.so  
ls
ldd usehello.so

切记共享库写在.cpp文件的后面,否则就会加载不上动态链接库
技术分享图片

gcc -o main  -I. -Wl,-rpath=/home/yzw/test  main.cpp usehello.so
ls
ldd main

技术分享图片

./main`
技术分享图片

备注:

  1. -I 后面加头文件的路径, -I. 表示在当前的目录下搜索头文件
  2. -Wl,-rpath=/home/yzw/test 表示指定优先搜索的共享库地址,首先你的地址必须在/etc/ld.so.conf文件中,或者在/etc/ld.so.conf.ld目录下。
  3. 来自于链接一的补充说明:
    ldconfig命名与运行程序市有关,与编译时一点关系都没有,因此,在编译的时候依旧需要加上优先指定库路径,如: -Wl,-rpath=/home/yzw/test

原文:http://blog.51cto.com/12656963/2092089


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!