Essas duas questões são descritas com mais detalhes aqui . Mas a solução de visão geral é:
O erro "não foi possível encontrar o crt1.o ...." é um bug sobre o qual se falou antes . A maneira de contornar é descobrir onde crti.o mora em seu sistema:
sudo find /usr/ -name "crti.o"
/usr/lib32/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/libx32/crti.o
Pegue o local com o "linux-gnu" e adicione-o à variável ambiental LIBRARY_PATH. Para isso, edite o arquivo .bashrc e recarregue-o. A saber:
gedit ~/.bashrc
Adicione ao final:
LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH
(substituindo o caminho pelo correto para o seu sistema). Salve e saia do arquivo e recarregue-o:
source ~/.bashrc
O "não pode encontrar -lgcc_s" significa que o ld não pode encontrar uma biblioteca (libgcc_s). Você pode ajudar, encontrando a biblioteca:
sudo find /usr/ -name libgcc_s.so
que retornou algumas versões para mim, então eu escolhi o último (que estava localizado aqui: '/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so') e, em seguida, verifiquei onde ld estava esperando a biblioteca:
ld -lgcc_s --verbose
Isso retornou um monte de texto, mas a parte principal em que estamos interessados está bem no final:
==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libgcc_s.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libgcc_s.a failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libgcc_s.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libgcc_s.a failed
attempt to open //usr/local/lib64/libgcc_s.so failed
attempt to open //usr/local/lib64/libgcc_s.a failed
attempt to open //lib/x86_64-linux-gnu/libgcc_s.so failed
attempt to open //lib/x86_64-linux-gnu/libgcc_s.a failed
attempt to open //lib64/libgcc_s.so failed
attempt to open //lib64/libgcc_s.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libgcc_s.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libgcc_s.a failed
attempt to open //usr/lib64/libgcc_s.so failed
attempt to open //usr/lib64/libgcc_s.a failed
attempt to open //usr/local/lib/libgcc_s.so failed
attempt to open //usr/local/lib/libgcc_s.a failed
attempt to open //lib/libgcc_s.so failed
attempt to open //lib/libgcc_s.a failed
attempt to open //usr/lib/libgcc_s.so failed
attempt to open //usr/lib/libgcc_s.a failed
ld: cannot find -lgcc_s[/text]
Se fizermos um link simbólico de onde o arquivo atual está para um desses locais, tudo será feito:
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so /usr/lib/x86_64-linux-gnu/