9

我正在尝试LD_LIBRARY_PATH从我的 C++ 程序中更改。我可以使用它来获取它的值并使用它来getenv("LD_LIBRARY_PATH")设置它的值setenv()(我知道这是有效的,因为当我getenv("LD_LIBRARY_PATH")再次调用时,我得到了更新的值),但是从程序内部更改它的值没有任何效果就可以了:我仍然收到此错误消息:

Failed to Load the shared library file

如果我在加载可执行文件或启动应用程序之前设置该值,则它可以正常工作。

4

1 回答 1

14

不幸的是,LD_LIBRARY_PATH从正在运行的程序中进行设置对其没有影响。这样做的原因LD_LIBRARY_PATH是由动态链接加载器 (ld.so) 处理,它是启动程序的程序。您的程序本身不会处理LD_LIBRARY_PATH,因此更改它不会产生任何效果。

于 2013-10-12T19:20:29.293 回答