On Wed, Oct 06, 2010 at 02:29:41AM +0400, Dmitry V. Levin wrote: > Если перед запуском этой длинной команды выполнить > $ alias gcc='gcc -Wl,--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 main(){return foo1()+foo2();}' | gcc -o main -xc - -Wl,--rpath,$PWD -L. -lfoo2 && /usr/lib/rpm/lib.req main /lib64/ld-linux-x86-64.so.2 rtld(GNU_HASH) /home/raorn/tmp/l/libfoo1.so /home/raorn/tmp/l/libfoo2.so libc.so.6(GLIBC_2.2.5)(64bit) $ alias gcc='gcc -Wl,--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 main(){return foo1()+foo2();}' | gcc -o main -xc - -Wl,--rpath,$PWD -L. -lfoo2 && /usr/lib/rpm/lib.req main /usr/bin/ld: /tmp/.private/raorn/ccf6VsNk.o: undefined reference to symbol 'foo1' /usr/bin/ld: note: 'foo1' is defined in DSO /home/raorn/tmp/l/libfoo1.so so try adding it to the linker command line /home/raorn/tmp/l/libfoo1.so: could not read symbols: Invalid operation collect2: ld returned 1 exit status -- Regards, -- Sir Raorn. --- http://thousandsofhate.blogspot.com/