ld
é o linker, ou seja, o programa que une o código que você escreveu com o código de biblioteca preexistente. -lc
significa a biblioteca que está armazenada no arquivo libc.a
e que está vinculada porque a opção -lc
é passada para o vinculador.
libc
é a biblioteca padrão C , que é vinculada automaticamente em todos os programas, a menos que você solicite explicitamente que não seja 't (o que raramente é feito exceto por coisas como compilar a própria libc, já que você praticamente não pode fazer nada sem a libc, e você definitivamente não pode fazer nada que seja vagamente portátil).
Você precisa do pacote que fornece libc.a
. Você pode encontrá-lo com apt-file search /libc.a
(você precisará instalar apt-file
primeiro e inicializá-lo executando sudo apt-file update
). O pacote é chamado libc6-dev
; a maioria dos pacotes de desenvolvimento no Debian e derivados (incluindo Ubuntu, Mint, etc.) são chamados libNAME#-dev
onde NAME é o nome da coleção da biblioteca (que nem sempre é o nome da biblioteca específica com a qual você se vincula, por exemplo libc6
package inclui outras bibliotecas como libm
) e # é um número de versão.
A biblioteca padrão C é necessária para construir praticamente qualquer coisa, por isso é uma dependência do pacote essencial de compilação , que você deve incluir se fizer alguma compilação.