为什么这个GLUT程序不能编译? 我是否缺less库或头文件?

我刚刚开始使用Linux(Mint 11),最近我决定把OpenGL编程作为一项业余爱好。 我发现代码和技术相对简单,但是我很难将所有资源都放在正确的位置。 代码是:

#include <stdlib.h> #include <stdio.h> #include <GL/glew.h> #ifdef __APPLE__ # include <GLUT/glut.h> #else # include <GL/glut.h> #endif static int make_resources(void) { return 1; } static void update_fade_factor(void) { } static void render(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glutSwapBuffers(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowSize(400, 300); glutCreateWindow("Hello World"); glutDisplayFunc(&render); glutIdleFunc(&update_fade_factor); glewInit(); if (!GLEW_VERSION_2_0) { fprintf(stderr, "OpenGL 2.0 not available\n"); return 1; } if (!make_resources()) { fprintf(stderr, "Failed to load resources\n"); return 1; } glutMainLoop(); return 0; } 

当我编译时,我得到以下消息

 ../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXQueryChannelRectSGIX'| ../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXChannelRectSyncSGIX'| ../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXChannelRectSGIX'| ../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXQueryChannelDeltasSGIX'| ../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXBindChannelToWindowSGIX'| ||=== Build finished: 5 errors, 0 warnings ===| 

在网上查看告诉我,我可能不包括正确的图书馆(大概是libX),但是我不确定我在哪里可以find他们,如果他们甚至是正确的使用。 我已经尝试链接/usr/lib/X86_64-linux-gnu/libX11.so,/ usr / lib / X11既不包含库文件也不包含/ lib目录,并且我确信lib11-dev包已经安装。 我究竟做错了什么?

信息:
操作系统:Linux Mint 11
IDE:代码块10.05
遵循本教程。 注意:我找不到它引用的x11r6目录。

Solutions Collecting From Web of "为什么这个GLUT程序不能编译? 我是否缺less库或头文件?"

确保你已经安装了libglew-dev和freeglut3-dev

 sudo apt-get install libglew-dev freeglut3-dev 

然后用Makefile或编译命令链接到这个库

 -lglut -lGLEE 

例如

 g++ -lglut -lGLEW -o test main.cpp 

(这是我编译你的例子)

在Linux中,您不指定链接到库文件的路径,而只指定库名称。 链接器知道要在库中查找的路径列表。 库也包含对所有其他需要的库的引用。 要编译/链接一个GLUT程序,下面的命令行通常就足够了

 gcc -o ${BINARY} ${SOURCE_FILES_OR_OBJECTS} -lglut