我正在尝试通过遵循此tutorial使OpenGL在使用c++的Linux机器上工作
我正在使用Ubuntu 12.04 LTS。我同时拥有freeglut3-dev安装的mesa-common-devsudo 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
我注意到我确实有gl.hglut.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'
我还有大约20个其他未定义的引用错误。因此,必须是我没有正确安装某些东西,或者缺少文件。我确实注意到我通过运行glxinfo检查了硬件加速信息,并且确实具有硬件加速。
  • 如何使用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
    
    然后我运行了./cube,它起作用了!请解释为什么放置-lGL-lGLU可以工作

    最佳答案

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

    09-15 23:33