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 に答える