30

谁能给我正确的命令来用mingw在windows上构建glew?

我试过了:

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

但我收到了数千个链接器错误(缺少参考)。

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

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

4

8 回答 8

48

要使用 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 文件夹,其中包含所需的可执行文件和库

于 2011-05-14T22:44:31.980 回答
19

我让它工作(使用MinGW),我没有编译glew32mx而是编译glew32。只需从 GLEW 网站下载源 .zip。并且记得在glew-1.xx目录下创建“lib”目录,否则编译下面第二行代码时会报“can't find /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 编译的。

于 2012-11-26T18:15:07.943 回答
6

找到了另一个适用于 Code::Blocks 的解决方案。脚步:

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

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

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

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

于 2011-08-03T19:42:52.450 回答
6

Glew 构建系统尝试使用config/configure.guess. $SYSTEM您可以通过指定make来重载此行为。查看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
于 2013-05-23T09:41:12.687 回答
1

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

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

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

于 2012-11-11T06:50:00.577 回答
1

以下是 VLC 如何在 mingw 上构建 glew(静态):

https://github.com/videolan/vlc/tree/master/contrib/src/glew(他们应用了那个补丁)。Guess 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似乎很弱......)

于 2013-09-17T03:40:05.370 回答
0

我相信Glew 的主网站在首页上有一个指向二进制文件的链接,适用于32 位64 位Windows 系统。

于 2011-05-14T22:20:03.033 回答
0

如果您安装了 MingW,只需运行 Msys 并在您完成将库和包含文件夹复制到 bin 库并在 MingW 中包含文件夹后进行安装,它应该一切正常

简单快速的解决方案

于 2016-02-01T05:23:11.757 回答