On Wed, Oct 06, 2010 at 02:12:09AM +0400, Dmitry V. Levin wrote: > On Wed, Oct 06, 2010 at 02:04:35AM +0400, Alexey I. Froloff wrote: > > On Wed, Oct 06, 2010 at 02:01:44AM +0400, Dmitry V. Levin wrote: > > > > > Только откуда следует, что это поведение ld(1) неправильное? > > > > Не следует. Есть опция: > > > > `--copy-dt-needed-entries' > > > > `--no-copy-dt-needed-entries' > > > Только эта опция не влияет на результат сборки моего тестового > > > примера. > > Потому что с этой опцией надо собирать линкуемые библиотеки. > > Насколько я понял, в изначальной постановке задачи прилинковываемые > библиотеки изменять нельзя. Вот ещё более простой пример: $ 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 rtld(GNU_HASH) /usr/src/tmp/libfoo2.so libc.so.6(GLIBC_2.2.5)(64bit) lib.req: WARNING: /usr/src/tmp/libfoo3.so: underlinked libraries: /usr/src/tmp/libfoo1.so Если перед запуском этой длинной команды выполнить $ alias gcc='gcc -Wl,--no-copy-dt-needed-entries' то результат не меняется, что несколько странно. -- ldv