我正在尝试从我的C ++程序中更改LD_LIBRARY_PATH
。我可以使用getenv("LD_LIBRARY_PATH")
获取其值并使用setenv()
设置其值(我知道这是有效的,因为当我再次调用getenv("LD_LIBRARY_PATH")
时,我会获得更新的值) ,但是从程序内部更改其值对它没有任何影响:我仍然收到此错误消息:
Failed to Load the shared library file
如果我在加载可执行文件或启动应用程序之前设置了值,那么它可以正常工作。
答案 0 :(得分:10)
不幸的是,在正在运行的程序中设置LD_LIBRARY_PATH
对它没有任何影响。原因是LD_LIBRARY_PATH
由动态链接加载器(ld.so)处理,它是启动程序的程序。您的程序本身不会处理LD_LIBRARY_PATH
,因此更改它将无效。