Re: Generation and usage of shared libs
Ingvarr Zhmakin wrote: Говорю: make. Ругается: === g++ -lstlport_gcc -Lтыры-пыры тыры-мыры.o ... -shared -o ~/work/lib/libIBCommon.so -Wl,-soname,~/work/lib/libIBCommon.so /usr/bin/ld: cannot open output file ~/work/lib/libIBCommon.so: No such file or directory collect2: ld returned 1 exit status === А если ту же команду запустить из шелла -- делает, как миленькая. Или если, скажем, после -o поставить что-то типа 1.so, работает и через make. /usr/bin/ld: cannot open output file ~/work/lib/libIBCommon.so: No such file or directory - очень информативная строчка. ld не может найти каталога ~/work/lib, поэтому не может создать файл libIBCommon.so и ругается. И у тебя такого каталога нету. Есть, вероятно, каталога типа /home/ingvarr/work/lib. Но чтобы из первого получилось второе, символ ~ должен быть развернут в /home/ingvarr. Bash это делает превосходно. Make, видимо, не умеет. g++ и вызванный им ld тем более не умеют. Поэтому ld и написал ~/work/lib вместо /home/ingvarr/work/lib. С 1.so, думаю, понятно теперь почему работает.
Re: Generation and usage of shared libs
Доброе утро. Но чтобы из первого получилось второе, символ ~ должен быть развернут в /home/ingvarr. Сёмён Сёмёныч Ах, как всё просто... Спасибо. Такой вопрос вдогонку: как дать знать линкеру, что потребные символы определены в такой-то шарной либе (не в путях /etc/ld.so.conf)? Ingvarr.
Re: Generation and usage of shared libs
Ingvarr Zhmakin wrote: Такой вопрос вдогонку: как дать знать линкеру, что потребные символы определены в такой-то шарной либе (не в путях /etc/ld.so.conf)? Я так понимаю, речь про runtime. export LD_LIBRARY_PATH=/usr/local/lib:/home/ingvarr/work/lib:/foo/bar:/whatever; Кстати, не знаю, может быть ~/work/lib тоже сработает. Попробуй.
Generation and usage of shared libs
Доброе утро. Это опять я и у меня опять геморрой. Вот, хочу я сделать шарную либу. Говорю: make. Ругается: === g++ -lstlport_gcc -Lтыры-пыры тыры-мыры.o ... -shared -o ~/work/lib/libIBCommon.so -Wl,-soname,~/work/lib/libIBCommon.so /usr/bin/ld: cannot open output file ~/work/lib/libIBCommon.so: No such file or directory collect2: ld returned 1 exit status === А если ту же команду запустить из шелла -- делает, как миленькая. Или если, скажем, после -o поставить что-то типа 1.so, работает и через make. Где копать? Ingvarr.