Compiler autonome exe avec Cygwin
Je veux faire un stand-alone exe avec cygwin. J'ai deux options:
- Staticly lien cygwin1.dll
Si je peux lier statiquement cygwin1.dll, alors je peut obtenir un stand-alone exe. - De fusion cygwin1.dll avec myprog.exe
Si je peux fusionner cygwin1.dll avec mon programme, je peux obtenir un stand-alone exe.
Ne suggèrent pas que j'utilise IlMerge. Cela ne fonctionnera pas parce que je n'ai pas à compiler mon programme avec .NET.
Sont l'une de ces options possible? Si non, est-il rien de ce qui est possible avec ce dilemme? Merci!
- Je prendre ce que vous avez réellement besoin de services de CYGWIN.DLL et juste à l'aide de -Mno-cygwin (ou MinGW) ne fonctionnera pas pour vous?
Je ne sais pas. Je suis avec GCJ, mais je ne pouvais pas la SEP qui est venu avec mingw pour travailler.
Je ne sais pas. Je suis avec GCJ, mais je ne pouvais pas la SEP qui est venu avec mingw pour travailler.
OriginalL'auteur Leo Izen | 2010-09-03
Vous devez vous connecter pour publier un commentaire.
Je vois deux possibilités que vous pourriez envisager raisonnable. L'une serait de construire un exécutable de stub avec un autre compilateur (par exemple, MinGW -- que ce soit, juste de sorte qu'il n'a pas besoin de cygwin) pour décompresser le fichier exécutable principal et cygwin.dll dans un répertoire temporaire, puis de spawn que l'exécutable. Pour en distribuer qu'un seul exécutable, vous souhaitez les ajouter à l'exécutable principal et cygwin.dll à la "stub" binaire des ressources. C'est un peu moche, mais assez simple.
L'alternative consisterait à saisir le source de cygwin, et de construire une bibliothèque statique. Au moins en théorie, cela devrait être plus propre-mais c'est aussi sans doute plus de travail. Arriver à construire de façon purement statique de code au lieu d'une DLL sera presque certainement prendre un certain travail, mais il est difficile de deviner combien. Juste en parcourant un peu, il semble assez improbable que ça va être un travail rapide de quelques heures, ou quelque chose comme ça (sauf si il y a quelque chose que j'ai raté qui prend déjà en charge de la construire de manière statique, bien sûr).
OriginalL'auteur Jerry Coffin
Essayer de passer
-mno-cygwin
comme un compilateur et l'éditeur de liens drapeau. Si votre programme est assez simple, cela permettra d'éviter, selon Cygwin bibliothèques et de créer un EXE autonome.OriginalL'auteur Edmund
Plus de réponse précise de Jerry.
Procédure décrite ci-dessous doit être confronté avec vos droits de licence et de droit! Je sais que cela peut fonctionner, mais les droits pour distribuer le résultat (ou même d'effectuer la procédure) peut-être (et je suis vraiment sentir que sont) délimité par Cygwin licence. C'est parce que votre application va encore se référer à Cygwin (même si c'est inutile - mais est toujours dans votre application)
Assumer
hello.exe
est le nom de votre application compilée sous Cygwin dans le grand répertoire du projetC:\xxx\yyy\zzz\
Dans la console cygwin aller à
C:\xxx\yyy\zzz
et le typeVous obtenir toutes les Dll que votre application utilise. Ensuite, copiez
C:\xxx\yyy\zzz
à toutes les Dll répertoriés et spécifique pour cygwin.Notez que votre application peut invoquer d'autres applications (en utilisant la fonction exec par exemple) --- trouver les bibliothèques demandes de participation utiliser et de copier ces bibliothèques ainsi que cette applications elles-mêmes, à
C:\xxx\yyy\zzz
.Peut-être que vous devrez recompiler votre projet avec l'option de type
-L C:\xxx\yyy\zzz
. Regarder tous les autres chemins d'accès dans votre sources.Donc votre application devient indépendant de Cygwin d'installation et vous pouvez présenter sa fonctionnalité/le partager avec d' ---- d'autres utilisateurs de Windows sans Cygwin. Mais une fois de plus je point, et vous demandons d'être au courant de la marche de licence et de droit de Cygwin créateurs et de les observer!
OriginalL'auteur dtstgseete