Funciona quando eu coloco o -lGLU -lGL -logue no final da chamada do gcc. Ainda tenho certeza de que isso funcionou no passado.
Após atualizar para o 11.10, não consigo vincular o código ao libgl / glut. O freeglut3-dev etc. está instalado e parece que eles também podem ser encontrados. Eu realmente não tenho certeza do que está acontecendo.
Makefile
gltest: gltest.cc
gcc -Wall -lglut -lGLU -lGL gltest.cc -o gltest
gltest.cc
#include <GL/glut.h>
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
//glutInitWindowSizendowSize(320,320);
glutCreateWindow("test");
return 1;
}
Saída
jonas@fortress:~/dev/checkouts/test$ make
gcc -Wall -lglut -lGLU -lGL gltest.cc -o gltest
/tmp/cct1HevY.o: In function 'main':
gltest.cc:(.text+0x1e): undefined reference to 'glutInit'
gltest.cc:(.text+0x28): undefined reference to 'glutInitDisplayMode'
gltest.cc:(.text+0x37): undefined reference to 'glutInitWindowPosition'
gltest.cc:(.text+0x41): undefined reference to 'glutCreateWindow'
collect2: ld returned 1 exit status
make: *** [gltest] Error 1
Ao vincular com --verbose
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libglut.so succeeded
E quando verificar os símbolos nesse arquivo
$ readelf -Ws /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libglut.so|grep glutInit
278: 000000000001dfc0 1581 FUNC GLOBAL DEFAULT 11 glutInit
Estou muito confuso agora.
Funciona quando eu coloco o -lGLU -lGL -logue no final da chamada do gcc. Ainda tenho certeza de que isso funcionou no passado.
Seu Makefile
não funciona mais por causa de uma transição de toolchain (a transição foi planejada para natty, mas a alteração o que faz com que seu problema seja feito onírico). O sinalizador de vinculador --as-needed
é ativado por padrão no Ubuntu 11.10. Isso causa o problema que você observou. A solução é exatamente o que você descreveu em sua resposta.