Eu tive o mesmo problema e depois de 2 dias de luta, encontrei o problema.
o problema é com a glibc.
ld encontra o arquivo libc.so e tenta vinculá-lo, mas esse arquivo é um script de vinculador que informa ao vinculador quais arquivos vincular.
o conteúdo é:
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( ${LFS}/tools/lib/libc.so.6 ${LFS}/tools/lib/libc_nonshared.a AS_NEEDED ( ${LFS}/tools/lib/ld-linux-x86-64.so.2 ) )
como gcc passa a opção --sysroot=${LFS} para ld. ld adiciona ${LFS} a ${LFS}/tools/lib/libc.so.6 e tenta vinculá-lo, o que resulta no erro acima.
glibc_source_dir/Makerules line 1082 :
install: $(inst_libdir)/libc.so
$(inst_libdir)/libc.so: $(common-objpfx)format.lds \
$(common-objpfx)libc.so$(libc.so-version) \
$(inst_libdir)/$(patsubst %,$(libtype.oS),\
$(libprefix)$(libc-name)) \
$(+force)
(echo '/* GNU ld script';\
echo ' Use the shared library, but some functions are only in';\
echo ' the static library, so try that secondarily. */';\
cat $<; \
echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
'$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
) > [email protected]
mv -f [email protected] $@
O destino de instalação da glibc instala todas as bibliotecas em $(inst_libdir) , que é $(DESTDIR)$(prefix) , mas usa $(libdir) e $(slibdir) ao gravar o arquivo libc.so , que são reletivas para $(prefix) não $(DESTDIR) .
solução:
você tem que configurar o glibc com --prefix=/tools e depois instalá-lo com:
DESTDIR=${LFS} make install