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", думаю, понятно теперь почему работает.
Reply to: