15

是否可以在 Cygwin 下编译和运行 OpenGL 程序?如果是,如何?

4

4 回答 4

14

可以在 Cygwin 下编译和运行 OpenGL 程序。我在这里说明基本步骤:

  1. 我假设你知道 OpenGL 编程。如果没有,请获取红皮书The OpenGL Programming Guide)。无论如何,它是 OpenGL 的必读。

  2. 我假设你已经安装了 Cygwin。如果没有,请访问cygwin.com并安装它。

  3. 要编译和运行 OpenGL 程序,您需要名为opengl的 Cygwin 包。在 Cygwin 安装程序中,可以在图形部分下找到它。请安装此软件包。

  4. 编写一个简单的 OpenGL 程序,比如ogl.c

  5. 使用标志-lglut32 -lglu32 -lopengl32编译程序。(这会将您的程序与 GLUT、GLU 和 OpenGL 库链接起来。OpenGL 程序通常可能会使用这三个库中的所有函数。)例如:

    $ gcc ogl.c -lglut32 -lglu32 -lopengl32

  6. 运行程序。就这么简单!

于 2008-08-18T08:50:35.327 回答
2

如果上述方法不起作用(并且对我不起作用),请尝试以下方法(确实如此!)

gcc ogl.c -lglut -lglu -lgl

于 2009-11-04T20:43:15.680 回答
1

我记得几年前做过一次并取得了一些成功,基本上是在尝试交叉编译一个小型 Linux OpenGL C++ 程序。我确实记得 Windows OpenGL 驱动程序落后于时代的问题(由于 MS 专注于 DirectX)。我在我的 Windows 系统上安装了 NVidia OpenGL 和 DirectX 驱动程序,但 cygwin/g++ 似乎只想使用多年前的 Microsoft OpenGL DLL,它们没有对所有 ARB 扩展的最新支持,如着色器程序等.YMMV。

于 2008-08-23T21:09:33.757 回答
1

我通常不会发布这么长的答案,但这是值得的。

我将为Cygwin提供一个Windows 10 64 位设置,它使用与Visual Studio相同的库。您将能够使用相同的代码(相同的包含和库)使用两个开发环境,因此您可以根据需要在两者之间切换。

您需要三个库:OpenGLGLEWGLFW

  1. OpenGL

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 下的所有其他动态库。我不会再提了。

赛格温:

OpenGL静态库默认位置:

/lib/w32api/libopengl32.a

OpenGL 动态库(使用 Windows DLL):

C:\Windows\SysWOW64\opengl32.dll
  1. GLEW

Visual Studio:从自定义文件夹下载 32 位/64 位二进制文​​件http://glew.sourceforge.net/并安装在自定义文件夹中,例如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所示LDLIBSMakefile与上面指定的下载目录一致):

GLEW 头文件目录:

/cygdrive/c/OpenGL/glew-2.1.0/include

GLEW 静态库目录:

/cygdrive/c/OpenGL/glew-2.1.0/lib/Release/x64

GLEW动态库目录:

/cygdrive/c/OpenGL/glew-2.1.0/bin/Release/x64

分别使用、 和的这些值INCS,然后您可以使用 UNIX 命名约定进行链接,如文章底部完整的 、 所示。LIBSLDLIBSMakefile

  1. GLFW

这可以在 下载https://www.glfw.org/download。对于我们的 64 位设置,您需要 Windows 64 位预编译二进制文件。您也可以将其放在自定义文件夹中,例如C:\OpenGL\glfw-3.3.4.bin.WIN64. 相同的下载适用于 VS 和 Cygwin。

Visual Studio: 您可以将下载位置直接指定到项目属性中,#include GLFW/glfw3.h分别用于标头(在源代码中)和 DLL(让 VS 链接到这些库)。

Cygwin: 对于 Cygwin,GLFW 比较棘手,因为您不能再直接从下载位置链接到它。你需要:

(a) 从下载位置复制标题、静态和动态库:

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

...进入您的工具链(MinGW)各自的位置:

GLFW 标头(创建include目录):

/usr/x86_64-w64-mingw32/include/GLFW/*.h

GLFW 静态库:

/usr/x86_64-w64-mingw32/lib/*.a

GLFW 动态库:

/usr/x86_64-w64-mingw32/bin/*.dll

(b) 将动态库位置放入您的 PATH 环境变量中,可在您.bash_profile的主目录中的文件中进行编辑。

MakefileCygwin 是:

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

通过此设置,您可以在 VS 和 Cygwin 中使用完全相同的源代码文件。Program.exe您可以使用以下命令从 Cygwin 中的目录编译、链接和运行:

$ make Program
$ ./Program.exe

*.exe您可以通过将现有项目作为 SLN 项目打开并使用 IDE 界面运行它来从 VS 运行 Cygwin 编译的程序。相反,您可以使用上面的命令直接从 Cygwin 命令行运行 VS 可执行文件(由 VS 在Project/Debug或中创建)。Project/Release

包括:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

无需对源代码进行任何更改即可在黑白 VS 和 Cygwin 之间来回切换。快乐编码:-)

于 2021-06-21T21:19:57.867 回答