c++ - libreria - glew sourceforge
Glew de construcción en ventanas con mingw (8)
¿Alguien puede darme el comando correcto para construir glew en windows con mingw?
Yo he tratado:
gcc -static glew.c glewinfo.c visualinfo.c -I / path / to / glew / include
pero estoy recibiendo miles de errores del enlazador (referencia faltante).
No puedo compilar con Make porque lamentablemente el archivo makefile tiene muchos comandos de Unix y no tengo cygwin ni nada en el trabajo.
(Alternativamente, si alguien puede indicarme una versión de Windows 32b, estaría muy agradecido)
Además de la respuesta de PoL0, descubrí que esos pasos funcionaban para mí con MinGW en Code :: Blocks, pero con una modificación adicional requerida: el proyecto predeterminado tiene una gran cantidad de tonterías de Microsoft establecidas en las "otras opciones" en las opciones del compilador. Elimínalos y obtendrás un buen resultado (opciones de compilación del proyecto -> [cada objetivo] -> pestaña de configuración del compilador -> otras opciones subficha)
Es posible que también desee habilitar la optimización para los dos objetivos de lanzamiento (-O2 o -O3).
Además, las bibliotecas estáticas se compilarán en "bin" de forma predeterminada, tendrá que copiarlas / moverlas para reemplazar las que están en "lib".
Así es como VLC construye glew (static) en mingw:
https://github.com/videolan/vlc/tree/master/contrib/src/glew (aplican ese parche). Guess glew no tiene una opción fácil para "solo" crear una biblioteca estática por lo que debe atravesar varios obstáculos (o compilar manualmente, como se hace alusión a las otras respuestas).
Ver también http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows#GLEW
y el paso 7 aquí: http://sujatha-techie.blogspot.com/2008/10/glsl-with-mingw.html
Así es como lo hace mx: https://github.com/mxe/mxe/blob/master/src/glew.mk (parece que básicamente solo compila todo manualmente, el Makefile de glew parece débil ...)
Glew build system intenta detectar automáticamente su entorno usando config/configure.guess
. Puede sobrecargar este comportamiento especificando $SYSTEM
para hacer. Ver config/Makefile.*
Para todas las configuraciones de construcción compatibles. Glew ya incluye configuración para usar MinGW.
Por lo tanto, puede que solo deba iniciar:
make SYSTEM=linux-mingw64
En mi Fedora, tuve que ajustar algunas variables de config/Makefile.linux-mingw64
:
-
$CC
y$LD
no eran correctos - Tuve que especificar el directorio donde se ubicaron las bibliotecas del sistema
- Tenía que especificar dónde debería instalarse glew
Finalmente, lancé:
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
Lo hice funcionar (con MinGW), no compilé glew32mx sino glew32. Solo descarga el archivo .zip de origen del sitio web de GLEW. Y recuerde crear el directorio "lib" en el directorio glew-1.xx, de lo contrario se quejará de "no se puede encontrar /lib/glew32.dll" al intentar compilar la segunda línea de código a continuación:
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
Los binarios precompilados en el sitio web de GLEW no funcionan con mingw, porque están compilados con Visual Studio, creo.
Para compilarlo con MinGW, debe hacerlo (copiado del registro de make, con ligeras modificaciones y explicaciones adicionales):
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
Debería tener una carpeta lib y una carpeta bin con los ejecutables y las bibliotecas deseadas
Se encontró otra solución que funciona con Code :: Blocks. Pasos:
1) Obviamente necesitarás código fuente glew;)
2) Abra los archivos glew_shared.dsw con C :: B, edite las propiedades del proyecto y, para cada objetivo de compilación que necesite, cambie su tipo de "Biblioteca dinámica" a "Biblioteca estática" (está ahí, en la pestaña Objetivos de compilación). También puede cambiar el directorio de destino ya que los archivos .dll están integrados en el directorio bin /.
3) Agregue #define GLEW_STATIC antes #include
4) Construye el objetivo y dará como resultado que se cree libglew32 * .a propiamente dicho
si tiene MingW instalado, simplemente ejecute Msys y realice e instale allí una vez que termine de copiar las bibliotecas e incluya las carpetas en las librerías de carpetas e incluya las carpetas en MingW y todo debería funcionar bien.
solución simple y rápida