Я написал общий объект, скажем libsd.so
, и я положил libsd.so
и его заголовочный файл sd.h
в ~/lib
.LD_LIBRARY_PATH, общий путь lib в linux
Вот еще одна программа, использующая 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
?
Ну, почему это не очень хорошая идея? не могли бы вы рассказать об этом? – Alcott
Вы можете видеть здесь, почему это не очень хорошая идея: http://linuxmafia.com/faq/Admin/ld-lib-path.html Однако кажется, что вы даже не должны использовать его в скрипте, но скорее используйте опцию -R – Tim
Я использую Fedora, а не Solaris, но есть ли '-R' в gcc? – Alcott