Sua instalação da libc está incompleta ou quebrada de alguma forma. Você deve dizer qual SO você usa ... a correção mais fácil é provavelmente reinstalar os pacotes que compõem a libc.
Ou se você estiver realmente interessado em descobrir exatamente qual parte dele está quebrada, veja algumas dicas:
Em uma instalação típica da glibc, as referências a __libc_csu_init
e __libc_csu_fini
serão resolvidas encontrando-as em /usr/lib/libc_nonshared.a
, que você pode verificar da seguinte forma:
$ nm /usr/lib/libc_nonshared.a | egrep '__libc_csu_(init|fini)'
0000000000000000 T __libc_csu_fini
0000000000000010 T __libc_csu_init
O uso de /usr/lib/libc_nonshared.a
será acionado ao vincular a /usr/lib/libc.so
(que é um arquivo de texto, não um objeto compartilhado real). Você pode verificar isso assim:
Pode haver outras coisas também. Você pode verificar isso com
$ less /usr/lib/libc.so
[...]
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a )
/usr/lib/libc.so
será usado pelo vinculador para satisfazer o requisito -lc
, que você pode verificar assim:
$ ld --verbose -lc
[... lots of stuff ...]
opened script file /usr/lib64/libc.so
attempt to open /lib/libc.so.6 succeeded
/lib/libc.so.6
attempt to open /usr/lib/libc_nonshared.a succeeded