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