谁能给我正确的命令,用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文件夹
小智 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编译的.
找到了另一个适用于Code :: Blocks的解决方案.脚步:
1)显然你需要使用glew源代码;)
2)用C :: B打开glew_shared.dsw文件,编辑项目属性,对于你需要的每个构建目标,将它的类型从"动态库"改为"静态库"(它就在那里,在Build targets选项卡中).您也可以更改目标目录,因为.dll文件内置在bin \目录中.
3)在#include之前添加#define GLEW_STATIC
4)构建目标,它将导致正确的libglew32*.a被创建
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不正确最后,我发起了:
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)