Construire glew sur les fenêtres avec mingw
Quelqu'un peut-il me donner la commande correcte pour construire glew sur windows avec mingw?
j'ai essayé:
gcc - static glew.c glewinfo.c visualinfo.c-I/chemin/vers/glew/include
mais je reçois des milliers d'erreurs de linker (référence manquante).
Je ne peux pas construire avec Make parce que malheureusement le makefile a beaucoup de commandes unix seulement et je n'ai pas cygwin ou quoi que ce soit au travail.
(alternativement si quelqu'un pouvez m'indiquer un windows 32b construction, je vous serais très reconnaissant)
8 réponses
pour le construire avec MinGW, vous devez faire (copié à partir du log de make, 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 avoir un dossier lib et un dossier bin avec les fichiers exécutables et les bibliothèques
Je l'ai fait fonctionner (avec MinGW), Je n'ai pas compilé le glew32mx mais glew32 à la place. Il suffit de télécharger la source .zip à partir de GLEW site web. Et n'oubliez pas de créer le répertoire "lib" dans le glew-1.xx directory, sinon il se plaindra de " can't find/lib / glew32.dll" en essayant de compiler 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 GLEW ne fonctionnent pas avec mingw, parce qu'ils sont compilés avec visual studio, je pense.
J'ai trouvé une autre solution qui fonctionne avec le Code::Blocks. Les étapes:
1) évidemment, vous aurez besoin du code source glew;)
2) Ouvrir glew_shared.fichiers dsw avec C:: B, Éditez les propriétés du projet et, pour chaque cible de compilation dont vous avez besoin, changez son type de "Bibliothèque dynamique" en "bibliothèque statique" (c'est juste là, à L'onglet "Cibles de compilation"). Vous pouvez également modifier le répertoire de destination .les fichiers dll sont intégrés dans bin\ répertoire.
3) Ajouter # définir GLEW_STATIC avant #inclure
4) construisez la cible et il en résultera une libglew32*correcte.un être créé
Glew build system essayez de détecter automatiquement votre environnement en utilisant config/configure.guess
. Vous pouvez surcharger ce comportement en spécifiant $SYSTEM
pour faire. Voir config/Makefile.*
pour toutes les configurations de construction supportées. Glew inclut déjà la configuration pour utiliser MinGW.
Donc, vous n'avez qu'à lancer:
make SYSTEM=linux-mingw64
sur ma Fedora, j'ai dû accorder quelques variables de config/Makefile.linux-mingw64
:
$CC
et$LD
n'était pas correct- j'ai dû spécifier le répertoire où les bibliothèques du système ont été localisées
- j'ai eu de spécifier où glew doit être installé
Enfin, 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 ont fonctionné pour moi avec MinGW On Code:: Blocks mais avec une modification supplémentaire requise - le projet par défaut a beaucoup de non-sens de microsoft défini dans les "autres options" sous les options de compilateur. Effacer ces et vous aurez un bon résultat (projet de build options -> [cible] -> compilateur onglet paramètres -> autres options, sous-onglet)
vous pouvez également souhaiter permettre une optimisation pour les deux cibles de dégagement (- O2 ou - O3).
en Outre, les bibliothèques statiques seront construits dans "bin" par défaut, vous aurez besoin de copier / déplacer pour remplacer celles dans "lib".
Voici comment VLC construit glew (static) sur mingw:
https://github.com/videolan/vlc/tree/master/contrib/src/glew (ils appliquent ce patch). Guess glew n'a pas d'option facile pour "juste" construire une bibliothèque statique de sorte que vous devez passer par divers obstacles (ou compiler manuellement, comme les autres réponses font allusion).
Voir aussi http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows#GLEW
et étape 7 ici: http://sujatha-techie.blogspot.com/2008/10/glsl-with-mingw.html
C'est la façon dont la bourse n': https://github.com/mxe/mxe/blob/master/src/glew.mk (on dirait qu'ils fondamentalement juste manuellement tout construire, glew Makefile, semble faible...)
je crois que la principale Glew site web 32-bit et 64 bits les systèmes windows.
si vous avez MingW installé juste exécuter Msys et faire et faire installer là une fois que vous avez fini de copier les libs et inclure des dossiers à la bin libs et inclure des dossiers dans MingW et tout devrait fonctionner très bien
solution simple et rapide