
paulo1205
(usa Ubuntu)
Enviado em 18/01/2019 - 18:38h
A mensagem significa que a implementação de um ou mais símbolos (funções ou variáveis globais) que você usa no seu programa não foi encontrada. Provavelmente porque você não instruiu o linker a usar a biblioteca que tem essa implementação.
Note que quando você coloca diretivas “
#include” no seu código-fonte, você apenas dá ao compilador as
declarações dos símbolos, ou seja, quais são seus nomes e que tipos eles têm. Em muitos casos, a implementação reside numa entidade (geralmente num arquivo) à parte, que não é usado diretamente pelo compilador (que é o programa que começa a converter seu código-fonte em código-objeto, mas esse código-objeto ainda não tem a forma final de programa executável), mas apenas pelo linker (uma etapa que vem depois da compilação, e que normalmente é uma das últimas na geração do executável).
Quando você chama o
gcc ou
g++ com um programa simples com apenas um arquivo fonte, ele geralmente se encarrega de fazer todas etapas de produção do executável, cuidando de invocar automaticamente o linker (que é um programa cujo nome é
ld) após concluir a compilação (geralmente usando arquivos temporários que a gente nem consegue ver). Se você não especificar nada, ele geralmente inclui apenas um conjunto reduzido de bibliotecas muito comuns na hora em que chama o
ld, e esse conjunto seguramente não inclui as bibliotecas do OpenGL e GLUT, de modo que você tem de as incluir manualmente.
Assim, se você estava compilando seu programa com algo como “
g++ prog.cc”, deve passar a usar algo como “
g++ prog.cc -lglut -lGL” (que, por sinal, foi exatamente o que eu fiz na minha máquina para conseguir compilar o código que você postou).
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)