Quelqu'un peut-il me donner la bonne commande pour construire glew sur windows avec mingw?
J'ai essayé:
gcc -static glew.c glewinfo.c visualinfo.c -I/path/to/glew/include
mais je reçois des milliers d'erreurs de l'éditeur de liens (référence manquante).
Je ne peux pas construire avec Make car malheureusement le makefile a beaucoup de commandes Unix et je n'ai pas cygwin ou quoi que ce soit au travail.
(Sinon, si quelqu'un peut me pointer vers une version Windows 32b, je serais très reconnaissant)
Pour le construire avec MinGW, vous devez faire (copié à partir du journal de fabrication, avec de légères modifications et des explications supplémentaires):
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
Vous devriez alors avoir un dossier lib et un dossier bin avec les exécutables et bibliothèques souhaités
Je l'ai fait fonctionner (avec MinGW), je n'ai pas compilé le glew32mx mais glew32 à la place. Téléchargez simplement la source .Zip sur le site Web de GLEW. Et n'oubliez pas de créer le répertoire "lib" dans le répertoire glew-1.xx, sinon il se plaindra de "impossible de trouver /lib/glew32.dll" lors de la compilation de la deuxième ligne de code ci-dessous:
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
Les binaires précompilés dans le site Web GLEW ne fonctionnent pas avec mingw, car ils sont compilés avec Visual Studio, je pense.
Trouvé une autre solution qui fonctionne avec Code :: Blocks. Pas:
1) De toute évidence, vous aurez besoin du code source glew;)
2) Ouvrez les fichiers glew_shared.dsw avec C :: B, modifiez les propriétés du projet et, pour chaque cible de génération dont vous avez besoin, changez son type de "Bibliothèque dynamique" en "Bibliothèque statique" (c'est là, dans l'onglet Cibles de construction). Vous pouvez également modifier le répertoire de destination car les fichiers .dll sont intégrés dans le répertoire bin \.
3) Ajoutez #define GLEW_STATIC avant #include
4) Construisez la cible et cela entraînera la création de libglew32 * .a approprié
Glew build system essaie de détecter automatiquement votre environnement en utilisant config/configure.guess
. Vous pouvez surcharger ce comportement en spécifiant $SYSTEM
faire. Voir config/Makefile.*
pour toutes les configurations de build prises en charge. Glew inclut déjà la configuration pour utiliser MinGW.
Donc, vous devrez peut-être simplement lancer:
make SYSTEM=linux-mingw64
Sur ma Fedora, j'ai dû régler certaines variables de config/Makefile.linux-mingw64
:
$CC
et $LD
n'était pas correctEnfin, j'ai 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
Suite à la réponse de PoL0, j'ai trouvé que ces étapes fonctionnaient pour moi avec MinGW sur Code :: Blocks mais avec une autre modification requise - le projet par défaut a beaucoup de bêtises Microsoft définies dans les "autres options" sous les options du compilateur. Effacez-les et vous obtiendrez un bon résultat (options de construction de projet -> [chaque cible] -> onglet des paramètres du compilateur -> sous-onglet d'autres options)
Vous pouvez également souhaiter activer l'optimisation pour les deux cibles de version (-O2 ou -O3).
De plus, les bibliothèques statiques seront construites dans "bin" par défaut, vous devrez les copier/déplacer pour remplacer celles de "lib".
Voici comment VLC construit glew (statique) sur mingw:
https://github.com/videolan/vlc/tree/master/contrib/src/glew (ils appliquent ce patch). Je suppose que glew n'a pas d'option facile pour "simplement" construire une bibliothèque statique, vous devez donc passer par différents obstacles (ou compiler manuellement, comme les autres réponses font allusion).
Voir aussi http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows#GLEW
et l'étape 7 ici: http://sujatha-techie.blogspot.com/2008/10/glsl-with-mingw.html
C'est ainsi que mx le fait: https://github.com/mxe/mxe/blob/master/src/glew.mk (on dirait qu'ils construisent tout simplement manuellement tout, le Makefile de glew semble faible. ..)
si vous avez installé MingW, exécutez simplement Msys et faites et installez-y une fois que vous avez terminé de copier les bibliothèques et d'inclure des dossiers dans les bibliothèques bin et d'inclure des dossiers dans MingW et tout devrait bien fonctionner
solution simple et rapide
Je crois que le principal site Web de Glew a un lien vers les binaires sur la page d'accueil, pour 2 bits et 64 bits les systèmes Windows.