我必须在 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/