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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于LInux中共享库的嵌套调用例子的主要内容,如果未能解决你的问题,请参考以下文章

共享元素转换:活动到嵌套在另一个活动中的片段

共享元素转换在父片段和子片段之间不起作用(嵌套片段)

加载共享库的多个副本

onActivityResult() 未在新的嵌套片段 API 中调用

onActivityResult 从未在我的嵌套片段中调用

Linux动态库生成以及调用