On Wed, Oct 06, 2010 at 01:36:52PM +0400, Alexey I. Froloff wrote: > On Wed, Oct 06, 2010 at 01:18:45PM +0400, Dmitry V. Levin wrote: > > > Это не для библиотек: > > Для не-библиотек, пожалуй, и так уже всё неплохо. > > В первоначальной постановке задачи вопрос был именно про библиотеки. > Ну можно так: > > $ alias gcc='gcc -Wl,--no-undefined' > $ echo 'int foo1(){return 1;}' | gcc -fpic -shared -o libfoo1.so > -xc - && echo 'int foo2(){return foo1()+1;}' | gcc -fpic -shared > -o libfoo2.so -xc - -Wl,--rpath,$PWD -L. -lfoo1 && echo 'int > foo3(){return foo1()+foo2();}' | gcc -fpic -shared -o libfoo3.so > -xc - -Wl,--rpath,$PWD -L. -lfoo2 && /usr/lib/rpm/lib.req > libfoo3.so > /tmp/.private/raorn/cc4GWbBZ.o: In function `foo3': > :(.text+0xf): undefined reference to `foo1' > collect2: ld returned 1 exit status --no-undefined ещё раз показывает, что libfoo3.so не линкуется с libfoo1.so; лучше бы оно слинковалось, линкуются ведь обычные executables. -- ldv