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)

26
demandé sur Barak Itkin 2011-05-15 02:06:02

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

44
répondu Barak Itkin 2011-05-14 22:44:31

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.

17
répondu anon 2012-11-26 18:15:07

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éé

6
répondu PoL0 2011-08-03 19:42:52

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
5
répondu Jezz 2013-05-23 09:41:12

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".

1
répondu Riot 2012-11-15 01:17:21

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...)

1
répondu rogerdpack 2013-09-17 19:41:50

je crois que la principale Glew site web 32-bit et 64 bits les systèmes windows.

0
répondu Barak Itkin 2011-05-14 22:20:03

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

0
répondu hopjopper 2016-02-01 05:23:11