是否可以从Cygwin下编译和运行OpenGL程序?如果是,怎么样?
答案 0 :(得分:13)
可以在Cygwin下编译和运行OpenGL程序。我在这里说明基本步骤:
我假设您了解OpenGL编程。如果没有,请获取Red Book( OpenGL编程指南)。无论如何,这是OpenGL的必读书。
我假设你安装了Cygwin。如果没有,请访问cygwin.com并安装。
要编译和运行OpenGL程序,需要名为 opengl 的Cygwin软件包。在Cygwin安装程序中,可以在图形部分下找到它。请安装此软件包。
编写一个简单的OpenGL程序,比如 ogl.c 。
使用标志 -lglut32 -lglu32 -lopengl32 编译程序。 (这将您的程序与GLUT,GLU和OpenGL库链接.OpenGL程序通常可以使用其中3个函数。)例如:
$ gcc ogl.c -lglut32 -lglu32 -lopengl32
运行程序。就这么简单!
答案 1 :(得分:2)
如果上述方法不起作用(并且不适合我),请尝试以下方法(确实如此!)
gcc ogl.c -lglut -lglu -lgl
答案 2 :(得分:1)
我记得几年前取得了一些成功,基本上试图交叉编译一个小的Linux OpenGL C ++程序。我确实记得Windows OpenGL驱动程序落后于时代的问题(由于MS专注于DirectX)。我在我的Windows系统上安装了NVidia OpenGL和DirectX驱动程序,但是cygwin / g ++似乎只想使用多年前的Microsoft OpenGL DLL,它们没有对所有ARB扩展的最新支持,比如着色器程序等。 .YMMV。
答案 3 :(得分:1)
我通常不会发布这么长的答案,但这是值得的。
我将介绍 Cygwin 的 Windows 10 64 位 设置,它使用 与 Visual Studio 相同的库 >.您将能够使用具有相同代码(相同的包含和库)的两种开发环境,因此您可以根据需要在两者之间切换。
您需要三个库:OpenGL、GLEW 和 GLFW。
Visual Studio:以下默认位置对当前版本的 Windows 10 和 Visual Studio 2019 有效。
OpenGL 静态库:
C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\SDK\ScopeCPPSDK\vc15\lib\SDK\lib\opengl32.lib
OpenGL DLL:
C:\Windows\SysWOW64\opengl32.dll
opengl32.lib
库需要在 VS 项目 Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
下指定。这同样适用于 Visual Studio 下的所有其他动态库。我不会再提了。
Cygwin:
OpenGL 静态库默认位置:
/lib/w32api/libopengl32.a
OpenGL 动态库(使用 Windows DLL):
C:\Windows\SysWOW64\opengl32.dll
Visual Studio:从 http://glew.sourceforge.net/
下载 32 位/64 位二进制文件并安装在自定义文件夹中,例如 C:\OpenGL\glew-2.1.0
。相同的下载适用于 Visual Studio 和 Cygwin。
GLEW 标头(到 #include GL/glew.h
):
C:\OpenGL\glew-2.1.0\include
GLEW 静态库:
C:\OpenGL\glew-2.1.0\lib\Release\x64\glew32.lib
GLEW DLL:
C:\OpenGL\glew-2.1.0\bin\Release\x64\glew32.dll
这些可以在 VS 项目的属性菜单中指定。
Cygwin:您可以按原样从 Cygwin 链接到此库,这意味着您可以为 INCS
、LIBS
和 {{1} LDLIBS
中的 } 变量如下(与上面指定的下载目录一致):
GLEW 标头目录:
Makefile
GLEW 静态库目录:
/cygdrive/c/OpenGL/glew-2.1.0/include
GLEW 动态库目录:
/cygdrive/c/OpenGL/glew-2.1.0/lib/Release/x64
分别使用 /cygdrive/c/OpenGL/glew-2.1.0/bin/Release/x64
、INCS
和 LIBS
的这些值,然后您可以使用 UNIX 命名约定进行链接,如底部完整的 LDLIBS
所示的帖子。
这可以在 Makefile
下载。对于我们的 64 位设置,您需要 Windows 64 位预编译二进制文件。您也可以将它放在自定义文件夹中,例如 https://www.glfw.org/download
。相同的下载适用于 VS 和 Cygwin。
Visual Studio:
您可以直接将下载位置指定到项目属性中,分别用于标头(源代码中的 C:\OpenGL\glfw-3.3.4.bin.WIN64
)和 DLL(使 VS 链接到这些库)。
Cygwin: 对于 Cygwin,GLFW 更加棘手,因为您无法再直接从下载位置链接到它。您需要:
(a) 从下载位置复制标头、静态和动态库:
#include GLFW/glfw3.h
...进入您的工具链(MinGW)的相应位置:
GLFW 标头(创建 C:\OpenGL\glfw-3.3.4.bin.WIN64\include\GLFW\*.h
C:\OpenGL\glfw-3.3.4.bin.WIN64\lib-mingw-w64\*.a
C:\OpenGL\glfw-3.3.4.bin.WIN64\lib-mingw-w64\*.dll
目录):
include
GLFW 静态库:
/usr/x86_64-w64-mingw32/include/GLFW/*.h
GLFW 动态库:
/usr/x86_64-w64-mingw32/lib/*.a
(b) 将动态库位置放入您的 PATH 环境变量中,可在您的主目录中的 /usr/x86_64-w64-mingw32/bin/*.dll
文件中进行编辑。
Cygwin 的 .bash_profile
是:
Makefile
通过此设置,您可以在 VS 和 Cygwin 中使用完全相同的源代码文件。您可以使用以下命令从 Cygwin 中的目录编译、链接和运行 CC=/usr/bin/x86_64-w64-mingw32-c++.exe
OPTS=-std=c++11
DEBUG=-g
CFLAGS=-Wall -c ${DEBUG}
INCS= -I.\
-I/cygdrive/c/OpenGL/glew-2.1.0/include\
-I/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32
LIBS= -L/usr/lib\
-L/cygdrive/c/OpenGL/glew-2.1.0/lib/Release/x64\
-L/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32/lib
LDLIBS= -L/bin\
-L/cygdrive/c/OpenGL/glew-2.1.0/bin/Release/x64\
-L/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32\bin
Program.o: Program.cpp
${CC} ${OPTS} ${INCS} -c $<
Program: Program.o
${CC} ${OPTS} ${LIBS} ${LDLIBS} Program.o -lopengl32 -lglew32 -lglew32.dll -lglfw3 -lgdi32 -luser32 -o Program
:
Program.exe
通过将现有的 $ make Program
$ ./Program.exe
作为 SLN 项目打开并使用 IDE 界面运行它,您可以从 VS 运行 Cygwin 编译的程序。相反,您可以使用上述命令直接从 Cygwin 命令行运行 VS 可执行文件(由 VS 在 *.exe
或 Project/Debug
中创建)。
包括:
Project/Release
无需在源代码中进行任何更改即可在黑白 VS 和 Cygwin 之间来回切换。快乐编码:-)