[C语言] 调用 .so库,路径问题
别人的产品,一个库,包括一堆.h文件,和一堆.so(或.so.123)
我调用它们的时候,可以把它们放到一个文件夹下,如UserLib,
我调用a.so的时候,可以这样SoLib=dlopen("../UserLib/a.so",RTLD_LAZY);,简单的调用,路径是正确的,
但如果a.so里写的时候又调用了b.so,(我不知道它里边是怎么写的,可能是直接dlopen("b.so")也可能是dlopen("./b.so")),因为我只能控制读a.so的路径dlopen("../UserLib/a.so"),所以提示找不到b.so.
我问过人了,比较懒的办法,一个是把这些库都拷到usr/bin路径下,让它们成为系统库文件,这样只写库名称就可以了.还有一个就是把它们都拷到当前工程路径.
我觉得都不是很合理的办法,有没有大神知道怎么弄啊?
[解决办法]
在进程里设置环境变量 LD_LIBRARY_PATH 来指定搜索 so 文件的路径.
[解决办法]
用ldd命令查看可执行文件依赖的.so