------- Comment #2 from hjl dot tools at gmail dot com 2009-11-11 06:02 ------- GNU linker doesn't search any directories when "-r" is used. Gcc driver doesn't pass explicit search directories to linker:
[...@gnu-29 gcc]$ ./xgcc -B./ -v x.o Reading specs from ./specs COLLECT_GCC=./xgcc COLLECT_LTO_WRAPPER=./lto-wrapper Target: i686-pc-linux-gnu Configured with: ../src-trunk/configure --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld Thread model: posix gcc version 4.5.0 20091110 (experimental) [trunk revision 154081] (GCC) COMPILER_PATH=./ LIBRARY_PATH=./:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-B./' '-v' '-mtune=generic' ./collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o ./crtbegin.o -L. x.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed ./crtend.o /usr/lib/crtn.o [...@gnu-29 gcc]$ ./xgcc -B./ -r x.o -lm -v Reading specs from ./specs COLLECT_GCC=./xgcc COLLECT_LTO_WRAPPER=./lto-wrapper Target: i686-pc-linux-gnu Configured with: ../src-trunk/configure --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld Thread model: posix gcc version 4.5.0 20091110 (experimental) [trunk revision 154081] (GCC) COMPILER_PATH=./ LIBRARY_PATH=./:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-B./' '-r' '-v' '-mtune=generic' ./collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -r /usr/lib/crt1.o /usr/lib/crti.o ./crtbegin.o -L. x.o -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed ./crtend.o /usr/lib/crtn.o /usr/local/i686-pc-linux-gnu/bin/ld: cannot find -lm collect2: ld returned 1 exit status [...@gnu-29 gcc]$ That is why "ld -r -lm" fails. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42001