码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-03-28 17:30:03      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:共享库的嵌套问题

亲测成功!
参考网址:
嵌套例程: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

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

标签:共享库的嵌套问题

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!