【发布时间】:2011-07-28 06:10:17
【问题描述】:
我刚开始使用 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: 代码::blocks 10.05
关注this 教程。 注意:我找不到它所指的 x11r6 目录。
【问题讨论】:
-
如果你提供了一个用于编译和链接的命令就好了。
-
我只是在 code::blocks 中使用“build”选项。但是,我不确定如何在这个 IDE 中找到发布给编译器的内容,但如果有帮助,我会先创建一个空白项目,然后在构建设置中将其更改为“GUI 应用程序”。我添加了 libGL、libGLU、libGLEW、libGLUT 和 /usr/lib/x86_64-linux-gnu/libX11.so。编译器选项显示除了抑制警告的选项之外没有检查其他选项。
标签: linux opengl linker glut codeblocks