用mingw在窗户上建立glew

28 c++ glew mingw

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

我试过了:

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

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

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

(或者,如果有人可以指向我的Windows 32b构建我将非常感激)

Bar*_*kin 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
Run Code Online (Sandbox Code Playgroud)

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

  • 这完全有效,谢谢.为什么GLEW的开发人员没有这么暗示呢?Windows == VS为他们. (8认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

GLEW网站上预编译的二进制文件与mingw不兼容,因为我认为它们是用visual studio编译的.


PoL*_*oL0 6

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

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

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

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

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


Jér*_*ler 5

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

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

make SYSTEM=linux-mingw64
Run Code Online (Sandbox Code Playgroud)

在我的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
Run Code Online (Sandbox Code Playgroud)