binutils pass1 ld-new not there?

Dan Nicholson dbn.lists at gmail.com
Sun Feb 25 17:07:50 PST 2007


On 2/25/07, Karen Karenslfs <karenslfs at gmail.com> wrote:
> Novice apologies.
>
> Host fc6 with later than recommended gcc & gnu c (don't know how to
> put in older versions)

This is, unfortunately, the problem. We might be able to workaround
it, but the easiest thing to do would be to use the LFS Live CD since
it will have compatible tools.

http://www.linuxfromscratch.org/livecd/

> gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -g -O2 -o ld-new
> ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o
> ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o eelf_i386.o
> ei386linux.o  ../bfd/.libs/libbfd.a ../libiberty/libiberty.a
> /tools/bin/ld: unrecognized option '--hash-style=gnu'
> /tools/bin/ld: use the --help option for usage information
> collect2: ld returned 1 exit status
> make[2]: *** [ld-new] Error 1

So, Fedora's newer toolchain is using an option called --hash-style
that /tools/bin/ld doesn't know about. They do this by hardcoding that
option into the gcc specs file. Then, when gcc calls ld, it always
adds this option.

Try this out. Run the last command with a slight addition:

$ make -C ld LIB_PATH=/tools/lib CC="gcc -B/usr/bin"

That will hopefully tell Fedora's gcc to prefer it's ld over the new
one in the PATH. Then you'd have to do something similar for gcc in
the next section:

$ CC="gcc -B/usr/bin" ../gcc-4.0.3/configure ...

Also, you can always check if the last command was successful from the
shell by looking at the variable $?:

$ true
$ echo $?
0
$ false
$ echo $?
1

It will be 0 if the last command was successful.

--
Dan



More information about the lfs-support mailing list