当我在c中编译程序时,为什么会得到一个未定义的引用(例如`glColor3f’)?

我正在编译一个在ubuntu(linux)中使用opengl的示例程序。 代码的简短片段如下:

#include  #include  void createBox( GLfloat centroX, GLfloat centroY, GLfloat corR, GLfloat corG, GLfloat corB ) { /* Cor */ glColor3f( corR, corG, corB ); 

我安装了在opengl(在ubuntu中)开发的所有软件包,即:

 freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev 

我像这样编译示例:

 gcc -lGL CG_ex04.c -o main 

我得到以下内容

 /tmp/ccDWmJDZ.o: In function `createBox': CG_ex04.c:(.text+0x31): undefined reference to `glColor3f' 

和同一行的其他错误。

有谁知道我做错了什么?

Thanx提前获得任何帮助。

试试gcc -o main CG_ex4.c -lGL 。 gcc参数的正确顺序很重要。

尝试包括GL / gl.h以及过剩。 但有点奇怪,因为过剩实际上包括gl.h和glu.h.