让我们考虑以下程序并尝试在 Cygwin 下编译它:
#include <GL/glut.h>
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glLoadIdentity();
}
它编译并运行得很好。-I/usr/include/opengl
似乎非常重要。
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
现在,
#include <GL/glew.h> // from newest NVIDIA SDK
#include <GL/glut.h>
int main(int argc, char** argv)
{
glewInit();
glutInit(&argc, argv);
glLoadIdentity();
}
编译
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
失败。如何构建第二个应用程序?
第一的
从 NVIDIA SDK 构建 glew 的方法有多种:VS、cygwin、cygwin 和 -D_WIN32。我还尝试了来自源代码的原始 glew 的 cygwin 构建。
VS构建给出
/cygdrive/c/DOCUME~1/kelebron/LOCALS~1/Temp/ccErbecl.o:test.cpp:(.text+0xa8): undefined reference to `_glLoadIdentity'
collect2: ld returned 1 exit status
cygwin 构建提供了许多
../lib/cygwin/glew32.lib(glew.o):glew.c:(.text+0x38e): undefined reference to `_glXGetProcAddress'
并且带有 -D_WIN32 的 cygwin 根本无法编译(这篇文章让我有点激动)。
第二
似乎有两种方法可以
使用 -L/lib/w32api
或 -L/usr/X11R6/lib -lX11 -lXi -lXmu与 OpenGL 链接
但是,-L 指令不会改变任何东西。我有 /usr/lib/w32api/libopengl32.a,但可能缺少 X11 版本(/usr/X11R6/lib/libGL?)。我应该在 Cygwin 中包含什么软件包?我已经安装了所有从 libGL 开始的(不仅......)。