c ++ OpenGL未定义的引用

Cod*_*lus 1 c++ opengl ubuntu

我正在尝试按照本教程使用c ++让OpenGL在我的linux机器上运行

我使用的是Ubuntu 12.04 LTS.我有两个freeglut3-dev and mesa-common-dev我安装的包 sudo apt-get install package-name1 package-name2

只是为了确保我去了推荐目录/usr/include/GL并列出了以下文件ls:

freeglut_ext.h  freeglut.h  freeglut_std.h  glext.h  gl.h  gl_mangle.h  glu.h  glu_mangle.h  glut.h  glxext.h  glx.h  glx_mangle.h  internal
Run Code Online (Sandbox Code Playgroud)

我注意到我确实有gl.h,glut.h所以我按照教程的建议测试了示例程序.我下载了zip文件,将文件解压缩到同一目录中,然后运行该make实用程序.这是运行后的一些输出make

g++ -Wall -o cube main.cpp imageloader.cpp -lglut
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glGenTextures'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glBindTexture'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glTexImage2D'
Run Code Online (Sandbox Code Playgroud)

我得到了大约20个其他未定义的引用错误.所以,一定是我没有正确安装或丢失文件.我注意到我通过运行检查了硬件加速信息glxinfo,我确实有硬件加速.

  1. 如何使用c ++使OpenGL工作

编辑如果我使用两个答案的组合证明它的工作:具体我做了以下:

someonespc:~/c++$ ls
imageloader.cpp  imageloader.h  main.cpp  Makefile  Makefile~  vtr.bmp
d2b2@d2b2-Aspire-7745G:~/c++$ g++ -Wall -lGL -o cube main.cpp imageloader.cpp -lglut -lGLU
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
someonespc:~/c++$ ls
cube  imageloader.cpp  imageloader.h  main.cpp  Makefile  Makefile~  vtr.bmp
Run Code Online (Sandbox Code Playgroud)

然后我跑了./cube' and it worked! Please explain why putting-lGL and-`lGLU工作

ant*_*ijn 6

添加-lGL到gcc命令行选项.它告诉链接器可以找到函数libGL.so(这是一个链接libGL.so.1).