我必须在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不起作用。
答案 0 :(得分:0)
较新版本的Glibc为此提供了dlmopen:
h = dlmopen(LM_ID_NEWLM, "path/to/some/version/of/libtest.so", RTLD_LAZY);