Enquanto procurava por algo não relacionado, descobri por que minha instalação estava pegando a antiga libc: porque a nova libc tinha uma versão antiga da ABI ( link ).
Então, foi o que eu fiz:
-
Eu fiz backup do conteúdo de
/lib,/lib32e/lib64. -
Eu editei
/etc/ld.so.conf.d/x86_64-linux-gnu.confpara colocar/lib64no topo dos caminhos de pesquisa. -
Eu configurei a nova versão do glibc (2.19) com opções
--prefix=/usr --enable-kernel=2.6.26para corresponder à versão antiga do glibc (2.13). -
Eu construí o novo glibc. Isso foi sem complicações.
-
Eu usei
supara obter privilégios de root e executeimake install. Ele começou a instalar, depois se separou depois que o novold-linux-x86-64.so.2foi instalado e ainda estava pegando o antigolibc.so.6. -
Para corrigir isso, eu corri
ldconfig(ainda como root, é claro). -
Eu reiniciei a instalação (
make install). Ele errou novamente em algum comando que chamougcc. Descobri que isso era devido a cabeçalhos incompatíveis: o novo/usr/include/stdio.hestava escolhendo o antigo/usr/include/x86_64-linux-gnu/sys/cdefs.hem vez da nova versão em/usr/include/sys/cdefs.h. -
Então, para corrigir isso, eu removi o diretório
/usr/include/x86_64-linux-gnu/syse substitui-o por um link simbólico para/usr/include/sys. Também substituí os cabeçalhosa.out.h,fpu_control.heieee754.hin/usr/include/x86_64-linux-gnupor links simbólicos para as novas versões em/usr/include. -
Eu reiniciei a instalação novamente (
make install). Finalmente conseguiu.
Depois que reiniciei meu sistema, tudo estava em perfeito funcionamento.
Ainda não descobri o que acontece se eu tentar atualizar também a versão de 32 bits da libc instalada junto com a versão de 64 bits do meu sistema. Eu suspeito que vai quebrar tudo de novo horrivelmente. Vai atualizar esta resposta se eu tiver sucesso.