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


Ответить