[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: