一尘不染

LD_LIBRARY_PATH,Linux中的共享库路径

linux

我写了一个共享对象,然后说说了libsd.so,把libsd.so它的头文件放进sd.h~/lib

这是另一个使用libsd.so,比如说的程序test.c,然后像这样编译它:

$ gcc -o test test.c -I~/lib -L~/lib -lsd

然后我test像这样运行:

$ ./test
./test_sd: error while loading shared libraries: libsd.so: cannot open shared object file: No such file or directory

所以我设置了export LD_LIBRARY_PATH=.,然后就可以了。但是,如果我unset LD_LIBRARY_PATH,并把LD_LIBRARY_PATH=~/lib~/.bashrc的话source ~/.bashrc,再次它没有工作./test,为什么?

export LD_LIBRARY_PATH=~/lib与放入LD_LIBRARY_PATH=~/lib~/.bashrc什么区别?


阅读 424

收藏
2020-06-03

共1个答案

一尘不染

如果没有导出,则声明的LD_LIBRARY_PATH仅在脚本(.bashrc)中有效。通过导出,它应该可以工作,但是像这样设置LD_LIBRARY_PATH通常不是一个好主意。

如果您不想在系统路径(例如/ usr / lib)中安装您的库,则可能应该使用一个脚本,该脚本在本地设置LD_LIBARAY_PATH并启动您的应用程序。

2020-06-03