kel*_*ron 6 opengl cygwin glew
让我们考虑以下程序并尝试在Cygwin下编译它:
#include <GL/glut.h>
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glLoadIdentity();
}
Run Code Online (Sandbox Code Playgroud)
它编译并运行得很好.-I/usr/include/opengl似乎非常重要.
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
Run Code Online (Sandbox Code Playgroud)
现在,
#include <GL/glew.h> // from newest NVIDIA SDK
#include <GL/glut.h>
int main(int argc, char** argv)
{
glewInit();
glutInit(&argc, argv);
glLoadIdentity();
}
Run Code Online (Sandbox Code Playgroud)
汇编
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
Run Code Online (Sandbox Code Playgroud)
失败.如何构建第二个应用程序?
有几种方法可以通过NVIDIA SDK构建glew:VS,cygwin,cygwin和-D_WIN32.我也从源头尝试了cygwin构建的原始glew.
VS build给出了
/cygdrive/c/DOCUME~1/kelebron/LOCALS~1/Temp/ccErbecl.o:test.cpp:(.text+0xa8): undefined reference to `_glLoadIdentity'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
cygwin构建给了很多
../lib/cygwin/glew32.lib(glew.o):glew.c:(.text+0x38e): undefined reference to `_glXGetProcAddress'
Run Code Online (Sandbox Code Playgroud)
并且带有-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开头的(不仅仅是......).
我刚才有类似的问题,我发现有两种方法可以在Cygwin下编译opengl代码.
第一个链接反对原生win32api库glut32 glu32 opengl32(也是glui).那些
有点旧:过剩v3.7.6
opengl v1.1 glui
2.11
第二种方式使用X11库glut glu gl.它们的头文件中有更新的版本号(请注意,使用GL扩展需要> v1.2):
glut v4(freeglut)
opengl v1.3
glext
...
所以要使用第一个选项comile:-I/usr/include/opengl
和链接:-lglut32 -lGLU32 -lOpenGL32
要使用X11版本,请使用以下命令编译:-I/usr/include /(默认包含)
并链接:-lglut -lGLU -lGL(注意区别)
您可以添加X11头文件和库,但我猜他们包括由GL的.
-I/usr/X11R6/include
-L/usr/X11R6/lib -lXmu -lXi -lXext -lX11
在Cygwin安装程序中,您可以选择以下软件包:
opengl - 给出
winng版本的opengl,glut,glui libglut -devel - X11版本的glut(freeglut),这也将挑选所有依赖包.(glproto,libGL libGLU,libX11,...)
我还建议包括Xorg服务器,因为你需要一个X服务器.
希望这可以帮助.
听起来您想链接到本机 Win32 库而不是 X11。添加-L/lib/w32api。否则,您需要链接 X11 库(-L/usr/X11R6/lib -lX11 -lXi -lXmu)以消除 glX* 链接器错误。