La compilación de GCC tiene referencias indefinidas a pesar de que los enlaces funcionales anteriores de Ubuntu
reference undefined (1)
Supongo que ld (el enlazador) ha sido cambiado para que funcione de manera diferente.
Coloque sus bibliotecas después del archivo fuente
gcc T1.c -lm -lGL -lGLU -lglut
O bien, apt-get install binutils-gold
, aparentemente el nuevo vinculador gold aún procesará bibliotecas compartidas dependientes, incluso si aparecen primero en la línea de comando.
parece que ya no puedo compilar mi código en GCC publicar la actualización de Ubuntu 11.10, a pesar de vincular en las bibliotecas con -l. Compilando con:
gcc -lm -lGL -lGLU -lglut T1.c
(Las dos bibliotecas que estoy tratando de vincular y tener como incluyen son exceso y matemáticas)
Todas las bibliotecas y archivos de encabezado están donde se supone que deben estar (no han ido a ninguna parte desde la actualización) y he comprobado todas mis instalaciones de paquetes relevantes. Además, aquí están mis variables de entorno y parecen estar en orden:
PATH = / usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / juegos
C_INCLUDE_PATH = / usr / include
No creo que sea un problema con el código ya que no puedo compilar los archivos que compilé satisfactoriamente ayer. Pero lo vincularé de todos modos por si acaso:
#include <math.h>
#include <GL/glut.h>
const int WIDTH=640;
const int HEIGHT=480;
const float NEAR_CLIP=0.1f;
const float FAR_CLIP=100.0f;
const double INC_ROTATE=5;
double rotate=0;
void rotateObject() {
rotate+=INC_ROTATE;
}
void update() {
//rotateObject();
}
void drawAxes() {
double x = 1.5, y = 1.5, z = 1.5;
glLineWidth(4);
glBegin(GL_LINES);
glColor3d(1,0,0);
glVertex3d(0,0,0);
glVertex3d(x,0,0);
glColor3d(0,1,0);
glVertex3d(0,0,0);
glVertex3d(0,y,0);
glColor3d(0,0,1);
glVertex3d(0,0,0);
glVertex3d(0,0,z);
glEnd();
glLineWidth(1);
}
void render() {
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(1.2,1.0,2.5,0.0,0.0,0.0,0.0,1.0,0.0);
drawAxes();
glColor3d(1,1,1);
glRotated(rotate,0,0,1);
glutWireCube(1);
}
void display() {
update();
render();
}
void reshape(int width, int height) {
float fAspect=0;
float fovy=(M_PI/3);
float top=tan(fovy*0.5)*NEAR_CLIP;
float bottom=top;
float left=fAspect*bottom;
float right=fAspect*top;
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(left,right,bottom,top,NEAR_CLIP, FAR_CLIP);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char **argv) {
glClearColor(0,0,0,1);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("T1");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(display);
glutMainLoop();
return 1;
}
Error de mensajes:
T1.c:(.text+0x63): undefined reference to `glLineWidth''
T1.c:(.text+0x6d): undefined reference to `glBegin''
T1.c:(.text+0x82): undefined reference to `glColor3d''
T1.c:(.text+0x93): undefined reference to `glVertex3d''
T1.c:(.text+0xa5): undefined reference to `glVertex3d''
T1.c:(.text+0xba): undefined reference to `glColor3d''
T1.c:(.text+0xcb): undefined reference to `glVertex3d''
T1.c:(.text+0xe1): undefined reference to `glVertex3d''
T1.c:(.text+0xf6): undefined reference to `glColor3d''
T1.c:(.text+0x107): undefined reference to `glVertex3d''
T1.c:(.text+0x11d): undefined reference to `glVertex3d''
T1.c:(.text+0x122): undefined reference to `glEnd''
T1.c:(.text+0x12f): undefined reference to `glLineWidth''
/tmp/cc4VqRwQ.o: In function `render'':
T1.c:(.text+0x143): undefined reference to `glClear''
T1.c:(.text+0x148): undefined reference to `glLoadIdentity''
T1.c:(.text+0x18a): undefined reference to `gluLookAt''
T1.c:(.text+0x1b1): undefined reference to `glColor3d''
T1.c:(.text+0x1ce): undefined reference to `glRotated''
T1.c:(.text+0x1db): undefined reference to `glutWireCube''
/tmp/cc4VqRwQ.o: In function `reshape'':
T1.c:(.text+0x22e): undefined reference to `tan''
T1.c:(.text+0x28a): undefined reference to `glViewport''
T1.c:(.text+0x294): undefined reference to `glMatrixMode''
T1.c:(.text+0x299): undefined reference to `glLoadIdentity''
T1.c:(.text+0x2da): undefined reference to `glFrustum''
T1.c:(.text+0x2e4): undefined reference to `glMatrixMode''
/tmp/cc4VqRwQ.o: In function `main'':
T1.c:(.text+0x30b): undefined reference to `glClearColor''
T1.c:(.text+0x31e): undefined reference to `glutInit''
T1.c:(.text+0x328): undefined reference to `glutInitDisplayMode''
T1.c:(.text+0x337): undefined reference to `glutInitWindowPosition''
T1.c:(.text+0x346): undefined reference to `glutInitWindowSize''
T1.c:(.text+0x350): undefined reference to `glutCreateWindow''
T1.c:(.text+0x35d): undefined reference to `glutDisplayFunc''
T1.c:(.text+0x367): undefined reference to `glutReshapeFunc''
T1.c:(.text+0x374): undefined reference to `glutIdleFunc''
T1.c:(.text+0x379): undefined reference to `glutMainLoop''
collect2: ld returned 1 exit status
Honestamente, no tengo idea de por qué gcc no puede encontrar los archivos fuente requeridos. Cualquier ayuda que pueda proporcionar sería muy apreciada, gracias de antemano.
EDITAR:
Estoy usando freeglut Se agregaron mensajes de error