Je veux faire un exe autonome avec Cygwin. J'ai deux options: p>
lien staticly link cygwin1.dll
Si je peux lier statiquement Cygwin1.dll, alors je peux obtenir un exe autonome. p> li>
fusion de cygwin1.dll avec myProg.exe
Si je peux fusionner Cygwin1.dll avec mon programme, je peux obtenir un exe autonome. p> li>
ol>
Ne suggère pas que j'utilise ilmmerge. Cela ne fonctionnera pas car je n'ai pas compilé mon programme avec .NET. P>
est-ce que l'une de ces options est possible? Sinon, y a-t-il quelque chose qui est possible avec ce dilemme? Merci! P>
3 Réponses :
Je peux voir deux possibilités que vous pourriez considérer raisonnables. Il serait nécessaire de construire un talon exécutable avec un autre compilateur (par exemple, Mingw - peu importe, il suffit de ne pas avoir besoin de Cygwin) pour déballer l'exécutable principal et Cygwin.dll dans un répertoire temporaire, puis republier. Pour ne distribuer qu'un seul exécutable, vous souhaitez ajouter l'exécutable principal et Cygwin.dll au «Stub» comme des ressources binaires. C'est un peu laid, mais assez simple. P>
L'alternative serait de saisir le Source à Cygwin , et construisez-le comme une bibliothèque statique. Au moins en théorie, cela devrait être plus propre - mais c'est aussi sans aucun doute plus de travail. L'obtenir pour construire comme code purement statique au lieu d'une DLL sera presque certainement du travail, bien qu'il soit difficile de deviner à quel point. Il suffit de naviguer un peu, il semble peu probable que cela soit un travail rapide de quelques heures, ou quelque chose comme ça (à moins qu'il y ait quelque chose que j'ai manqué qui supporte déjà la construction statique, bien sûr). P>
Essayez de passer -MNO-CYGWIN CODE> en tant que compilateur et drapeau de liaison. Si les exigences de votre programme sont suffisamment simples, cela évitera en fonction des bibliothèques Cygwin et de créer un exe autonome. P>
D'autres messages ont indiqué que cela ne fonctionne plus, pour des lecteurs plus récents. La fonctionnalité est maintenant obsolète.
Réponse plus précise de Jerry.
La procédure décrite ci-dessous doit être confrontée à votre droit des droits et de votre licence! Je sais que cela peut travailler, mais les droits de distribution du résultat (voire exécuter la procédure) peuvent être (et je pense vraiment que sont) délimités par la licence Cygwin. En effet, votre application fera toujours référence à Cygwin (même s'il est inutile - mais est toujours dans votre application) p>
supposons dans la console Cygwin accédez à Vous obtenez toutes les utilisations de votre application utilisées. Ensuite, copiez Notez que votre application peut appeler d'autres applications (à l'aide de la fonction exécutive par exemple) - - trouver des bibliothèques aplications Utilisez et copiez ces bibliothèques ainsi que ces applications elles-mêmes - à Vous devrez peut-être recompiler votre projet avec Option de type Ainsi, votre application devient indépendante de l'installation de Cygwin et vous pouvez présenter sa fonctionnalité pour / partager avec / les utilisateurs Windows sans Cygwin. Mais - une fois de plus, je pointe et vous demandez - soyez conscient d'une licence et d'une loi appropriées des créateurs de Cygwin et de les observer! P> P> hello.exe code> est le nom de votre excellente application compilée Sous Cygwin dans un excellent répertoire de projet
C: \ xxx \ yyy \ zzz \ code> p>
C: \ xxx \ yyy \ zzz code> et tapez p>
c: \ xxx \ yyy \ zzz code> à toutes les DLL répertoriées et spécifiques pour Cygwin. P>
C: \ xxx \ yyy \ zzz code>. p>
-LC: \ xxx \ yyy \ zzz code> ou ainsi. Regardez tous les autres chemins de vos sources. P>
Je suppose que vous avez réellement besoin de services de Cygwin.dll, et simplement utiliser -Mno-Cygwin (ou Mingw) ne fonctionnera pas pour vous?
Je ne sais pas. J'utilise GCJ, mais je ne pouvais pas obtenir le GCJ qui est venu avec Mingw pour travailler.