用mingw在窗户上建立glew

时间:2011-05-14 22:06:02

标签: c++ mingw glew

有人能给我正确的命令,用mingw在windows上构建glew吗?

我试过了:

  

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

但是我收到了数以千计的链接器错误(缺少引用)。

我无法使用Make构建,因为不幸的是,makefile有很多unix命令,我没有cygwin或任何工作。

(或者,如果有人能指出我的Windows 32b版本,我将非常感激)

8 个答案:

答案 0 :(得分:47)

要使用MinGW构建它,您应该这样做(从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文件夹

答案 1 :(得分:17)

我得到了它(使用MinGW),我没有编译glew32mx而是编译glew32。只需从GLEW网站下载源.zip即可。并记住在glew-1.xx目录中创建“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编译的。

答案 2 :(得分:6)

找到了另一个与Code :: Blocks一起使用的解决方案。步骤进行:

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

2)用C :: B打开glew_shared.dsw文件,编辑项目属性,对于你需要的每个构建目标,将它的类型从“动态库”更改为“静态库”(它就在那里,在Build targets选项卡中) )。您也可以更改目标目录,因为.dll文件内置在bin \目录中。

3)在#include

之前添加#define GLEW_STATIC

4)构建目标,它将导致正确创建libglew32 * .a

答案 3 :(得分:5)

Glew构建系统尝试使用config/configure.guess自动检测您的环境。您可以通过指定要生成的$SYSTEM来重载此行为。有关所有支持的构建配置,请参阅config/Makefile.*。 Glew已经包含使用MinGW的配置。

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

make SYSTEM=linux-mingw64

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

  • $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

答案 4 :(得分:1)

继PoL0的回答之后,我发现这些步骤对我来说对MinxW在Code :: Blocks上有效,但需要进一步修改 - 默认项目在编译器选项下的“其他选项”中设置了很多微软废话。清除这些并且您将获得良好的结果(项目构建选项 - &gt; [每个目标] - &gt;编译器设置选项卡 - &gt;其他选项子选项卡)

您可能还希望为两个版本目标(-O2或-O3)启用优化。

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

答案 5 :(得分:1)

以下是VLC在mingw上构建glew(静态)的方法:

https://github.com/videolan/vlc/tree/master/contrib/src/glew(他们应用该补丁)。猜猜glew没有“简单”构建静态库的简单选择,所以你必须经历各种障碍(或者手动编译,正如其他答案所暗示的那样)。

另见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(看起来他们基本上只是手动构建一切,glew的Makefile看起来很弱......)

答案 6 :(得分:0)

我认为主Glew website在首页上有32-bit64-bit窗口系统的二进制文件链接。

答案 7 :(得分:0)

如果您安装了MingW,只需运行Msys,然后在完成复制libs并将文件夹包含到bin libs并在MingW中包含文件夹后制作并进行安装,它应该都可以正常工作

简单快捷的解决方案