用mingw在窗户上build造glew

任何人都可以给我正确的命令,用mingw在windows上build立glew?

我努力了:

gcc -static glew.c glewinfo.c visualinfo.c -I / path / to / glew / include

但我得到数以千计的链接器错误(缺less参考)。

我不能用Make来编译,因为不幸的是makefile有很多unix的命令,而且我没有cygwin或者任何工作。

(或者如果任何人都可以指向我的Windows 32B版本,我将非常感激)

要用MinGW来构build它,你应该这样做(从make日志中复制,稍作修改并附加说明):

 mkdir lib/ mkdir bin/ gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 # Create library file: lib/libglew32.dll.a ar cr lib/libglew32.a src/glew.o # Create pkg-config file (optional if you just want a lib) sed \ -e "s|@prefix@|/usr|g" \ -e "s|@libdir@|/usr/lib|g" \ -e "s|@exec_prefix@|/usr/bin|g" \ -e "s|@includedir@|/usr/include/GL|g" \ -e "s|@version@|1.6.0|g" \ -e "s|@cflags@||g" \ -e "s|@libname@|GLEW|g" \ < glew.pc.in > glew.pc gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 # Create library file: lib/libglew32mx.dll.a ar cr lib/libglew32mx.a src/glew.mx.o # Create pkg-config file (optional if you just want a lib) sed \ -e "s|@prefix@|/usr|g" \ -e "s|@libdir@|/usr/lib|g" \ -e "s|@exec_prefix@|/usr/bin|g" \ -e "s|@includedir@|/usr/include/GL|g" \ -e "s|@version@|1.6.0|g" \ -e "s|@cflags@|-DGLEW_MX|g" \ -e "s|@libname@|GLEWmx|g" \ < glew.pc.in > glewmx.pc # Make the glew visualinfo program. Skip this if you want just the lib gcc -c -O2 -Wall -W -Iinclude -o src/glewinfo.o src/glewinfo.c gcc -O2 -Wall -W -Iinclude -o bin/glewinfo.exe src/glewinfo.o -Llib -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 gcc -c -O2 -Wall -W -Iinclude -o src/visualinfo.o src/visualinfo.c gcc -O2 -Wall -W -Iinclude -o bin/visualinfo.exe src/visualinfo.o -Llib -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 

然后,你应该有一个lib文件夹和bin文件夹与所需的可执行文件和库

我得到它的工作(与MinGW),我没有编译glew32mx,但glew32来代替。 只需从GLEW网站下载源代码.zip即可。 请记住在glew-1.xx目录下创build“lib”目录,否则会在尝试编译下面的第二行代码时抱怨“找不到/lib/glew32.dll”:

  gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 # Create glew32.dll ar cr lib/libglew32.a src/glew.o 

GLEW网站中的预编译二进制文件不能用于mingw,因为它们是用visual studio编译的,我想。

find另一个解决schemeCode :: Blocks。 脚步:

1)显然你将需要glew源代码;)

2)用C :: B打开glew_shared.dsw文件,编辑项目属性,对于你需要的每一个构build目标,将其types从“dynamic库”改为“静态库”(就在构build目标标签)。 您也可以将目标目录更改为.dll文件构build到bin \目录中。

3)在#include之前添加#define GLEW_STATIC

4)build立目标,这将导致创build正确的libglew32 * .a

Glew构build系统尝试使用config/configure.guess自动检测您的环境。 你可以通过指定$SYSTEM来重载这个行为。 请参阅config/Makefile.*获取所有支持的构buildconfiguration。 Glew已经包含configuration使用MinGW。

所以,你可能只需要启动:

 make SYSTEM=linux-mingw64 

在我的Fedora上,我不得不调整config/Makefile.linux-mingw64一些variables:

  • $CC$LD是不正确的
  • 我必须指定系统库所在的目录
  • 我不得不指定应该在哪里安装glew

最后,我发起了:

 make SYSTEM=linux-mingw64 \ CC=x86_64-w64-mingw32-gcc LD=x86_64-w64-mingw32-ld \ LDFLAGS.EXTRA=-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib \ GLEW_DEST=/usr/x86_64-w64-mingw32/sys-root/mingw install 

除了PoL0的回答之外,我发现这些步骤对MinGW在Code :: Blocks上的工作是有帮助的,但是需要进一步修改 – 默认项目在编译器选项下的其他选项中设置了很多微软的废话。 清除这些,你会得到一个好的结果(项目构build选项 – > [每个目标] – >编译器设置选项卡 – >其他选项子标签)

您也可能希望为两个发布目标(-O2或-O3)启用优化。

此外,默认情况下,静态库将被构build在“bin”中,您需要复制/移动它们以replace“lib”中的那些库。

这里是VLC如何在mingw上build立glew(静态):

https://github.com/videolan/vlc/tree/master/contrib/src/glew (他们应用该补丁)。 猜测glew没有简单的select“只是”build立一个静态库,所以你必须经历各种障碍(或手动编译,因为其他答案暗指)。

另见http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows#GLEW

和步骤7在这里: http : //sujatha-techie.blogspot.com/2008/10/glsl-with-mingw.html

这是如何mx做到这一点: https : //github.com/mxe/mxe/blob/master/src/glew.mk (看起来他们基本上只是手动构build一切,glew的Makefile似乎很弱…)

我相信主要的Glew网站有一个链接到头版的二进制文件, 32位和64位的 Windows系统。

如果你已经安装了MingW,只需要运行Msys并且在你完成复制libs和include文件夹到bin文件夹并包含在MingW中的文件夹的时候进行安装就可以了

简单快捷的解决scheme