linux - 如何在 Linux 中动态加载同名但不同目录的库?

标签 linux libraries dlopen

我必须在 Linux 中动态加载 .so,但我发现很难处理同名库。 我在不同的目录中有 2 个 libtest.so,它们依赖于其他不同的库。 我的程序读取配置文件来决定加载哪个 libtest.so。例如:

/usr/kyle/v1/libtest.so
/usr/kyle/v2/libtest.so

它们都没有在ldconfig中注册。 那么如何使用 dlopen 加载不同版本的 libtest.so 呢?我希望它们不会相互冲突,因为它们可能依赖于相同或不同的其他库。在我的程序中使用 putenv/setenv 更改 LD_LIBRARY_PATH 似乎不起作用。

最佳答案

较新版本的 Glibc 提供 dlmopen为此:

h = dlmopen(LM_ID_NEWLM, "path/to/some/version/of/libtest.so", RTLD_LAZY);

关于linux - 如何在 Linux 中动态加载同名但不同目录的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525016/

相关文章:

c - 向前兼容接口(interface)的函数签名更改

google-apps-script - 如何在 Google 脚本库中键入提示 Google 类型?

python - 人们是否经常使用标准库之外的库?

如果我使用 QtCreator 构建,从共享对象到主应用程序的调用会中断

c++ - std::thread 访问从共享库加载的函数

node.js - 如何在 Node 中的 child.process.exec 中使用的命令中转义 URL 中的字符

linux - 如何将 docker registry default 从 docker.io 更改为 centos 中的另一个地址

python子进程dpkg : I'm getting errors for something that runs in bash

objective-c - GC 能力不匹配0?

c++ - 在 Linux 中使用 getenv 函数