Comment compiler statiquement un jeu SDL sous Windows
J'ai essayé de produire statiquement "binaire" de la version de mon jeu pour windows. Je veux un lien avec sdl, sdl_image et sdl_mixer qui à son tour tirer dans quelques bibliothèques de prise en charge. Malheureusement, je n'ai pas trouvé un moyen de les avoir tous pour compiler et lier l'utilisation de cygwin/mingw/gcc. Aussi loin que je peux dire à tous les publics existants versions ne sont que des bibliothèques partagées /dll.
Veuillez noter que je ne parle pas de licence ici. La source sera ouverte ainsi que la GPL/LGPLness de la sdl n'est pas pertinent.
source d'informationauteur Sec
Vous devez vous connecter pour publier un commentaire.
Lors de la compilation de votre projet, vous avez besoin de faire quelques changements à votre makefile.
sdl-config --libs
utilisezsdl-config --static-libs
sdl-config --static-libs
avec-Wl,-Bstatic
et-Wl,-Bdynamic
. Cela dit GCC pour la force de liaison statique, mais seulement pour les bibliothèques spécifiées entre eux.Si votre makefile ressemble actuellement:
Le modifier:
Ce sont en fait les mêmes choses que vous devrait faire sur des systèmes de type Unix, mais il n'est généralement pas la cause de beaucoup d'erreurs sur Unix-aime si vous utilisez le plus simple
-static
drapeau à GCC, comme c'est le cas sur Windows.Via ce SDL liste de diffusion post il semble que la sdl outils de développement navire avec sdl-config script que vous pouvez utiliser avec l'option --statique-libs indicateur pour déterminer ce que l'éditeur de liens drapeaux, vous devez utiliser.
Environnement: VMWare Machine Virtuelle avec Windows 7 x64 et le Matériel que nous Dev c + + construire 7.4.2.569, complilador g+ + (tdm-1) 4.6.1
Une fois, SDL2-2.0.3 API installé en tant que configuration de Dev c ++ n'est pas très clair ce que j'ai fait que de la tradition exige de la ligne de commande.
Le premier problème est que Windows 7 semble avoir changé la méthodologie et ils vont à sa balle. De l'inventaire. Réf. https://stackoverflow.com/users/464581/cheers-and-hth-alf
Après le premier obstacle, SDL_platform.h est mauvais, c'est l'autre, je ne me souviens pas où je l'ai téléchargé, mais la prochaine ne fonctionne pas dans l'indication de la version.
Nous devons mettre SDL2.h ls dans le répertoire de l'exécutable.
D:\prg_desa\zsdl2>g++ bar.cpp main.cpp -o pepe1 -ID:\SDL2-2.0.3\i686-w64-mingw32\include\SDL2 -LD:\SDL2-2.0.3\i686-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2 -mwindow
J'ai enfin compilé et travaille SDL2 tests.
C'est parce que la SDL libs sont sous la LGPL-licence.
Si vous voulez le lien statique de la libs (vous pouvez le faire si votre recompiler. Il a besoin de quelque piratage dans le makefile), vous devez placer vos jeu sous certaines compatible licence open source.
La SDL-libs venir des bibliothèques partagées parce que la plupart des programmes qui les utilisent sont à code source fermé. La distribution binaire vient dans une forme que la plupart des gens ont besoin.
Sur mon système (Ubuntu), je dois utiliser les indicateurs suivants:
Que des liens SDL, SDL
_
image, et beaucoup de leurs dépendances statiques. libdl vous ne voulez jamais statique, afin de faire un binaire statique qui utilise SDL_
image est une mauvaise idée. impulsion,caca,aa, et directfb peut probablement être fait statique. Je n'ai pas assez loin pour comprendre encore.