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