我刚开始使用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),但是我不确定我在哪里可以找到它们,如果它们甚至是正确的库。我已经尝试连接/usr/lib/X86_64-linux-gnu/libX11.so,/ usr / lib / X11既不包含库文件也不包含/ lib目录,我确定已经安装了lib11-dev软件包。我究竟做错了什么?
信息:
操作系统:Linux Mint 11
IDE:Code :: blocks 10.05
遵循this教程。 注意:我找不到它引用的x11r6目录。
答案 0 :(得分:3)
确保已经安装了libglew-dev和freeglut3-dev
sudo apt-get install libglew-dev freeglut3-dev
然后使用
链接到Makefile中的libs或编译命令-lglut -lGLEE
例如
g++ -lglut -lGLEW -o test main.cpp
(这是我编写你的例子的方式)
答案 1 :(得分:1)
在Linux中,您不指定要链接到的库文件的路径,而只指定库名称。链接器知道要在库中查找的路径列表。库也包含对所需的所有其他库的引用。要编译/链接GLUT程序,以下命令行通常就足够了
gcc -o ${BINARY} ${SOURCE_FILES_OR_OBJECTS} -lglut