2

我必须在 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 不起作用。

4

1 回答 1

0

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

h = dlmopen(LM_ID_NEWLM, "path/to/some/version/of/libtest.so", RTLD_LAZY);
于 2018-02-20T20:31:15.303 回答