ExpertiDict

C · Essencial · Inglês · Técnico

undefined reference

/ˌʌn.dɪˈfaɪnd ˈɹɛf.ɹəns/substantivo

Erro do linker que indica que o programa usa uma função ou variável cuja definição não foi encontrada em nenhum arquivo objeto ou biblioteca na hora de ligar.

Onde usar

É o erro clássico de esquecer um .c na linha do gcc, de não passar -lm para usar sqrt no Linux ou de errar a ordem das bibliotecas. Vem depois da compilação, não durante ela.

Em código

#include <math.h>
#include <stdio.h>
int main(void) {
  printf("%f\n", sqrt(getchar()));
}
// gcc a.c      -> undefined reference
// gcc a.c -lm  -> ok

Exemplos

I got an undefined reference to sqrt; I forgot -lm.

Deu undefined reference para sqrt; esqueci o -lm.

It compiles fine, but the link step fails with an undefined reference.

Compila bem, mas a ligação falha com um undefined reference.

Cuidado

Procurar o erro como se fosse de sintaxe; ele indica falta de definição na ligação, quase sempre resolvida na linha de comando ou no Makefile.

Sinônimos

símbolo não resolvido

Veja também

Todos os termos de C