如何动态加载具有相同名称但在Linux中不同目录的库?

问题描述 投票:2回答:1

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

linux libraries dlopen
1个回答
0
投票

较新版本的Glibc为此提供dlmopen

h = dlmopen(LM_ID_NEWLM, "path/to/some/version/of/libtest.so", RTLD_LAZY);
© www.soinside.com 2019 - 2024. All rights reserved.