2009-09-25 8 views
6

J'ai cygwin sur windows à travers lequel je lance gcc. Mais après avoir créé des fichiers .exe, si je les exécute sur d'autres ordinateurs qui n'ont pas cygwin, il est dit cygwin1.dll introuvable. Existe-t-il un moyen de les compiler pour qu'ils fonctionnent sur n'importe quel système?Compilation avec gcc (cygwin sur windows)

Répondre

10

Dans votre cas, essayez de copier cygwin1.dll aussi bien (mais il pourrait dépendre d'autres DLLs ainsi) (bien sûr, vous devez respecter license de Cygwin en ce qui concerne la distribution cygwin1.dll)
En Cygwin , vous pouvez toujours vérifier les modules nécessaires pour l'utilisation:

objdump -p a.exe | grep 'DLL Name' 

oU

cygcheck ./a.exe 

ou pour les fenêtres en général, utiliser quelque chose comme cet outil: Dependency Walker

+0

cygcheck dit: "Erreur: n'a pas pu trouver un.exe" si j'écris "cygcheck a.exe" – avd

+2

utiliser: "cygcheck ./a.exe" – Amro

4

Vous pouvez essayer de compiler avec l'option de ligne de commande -mno-cygwin.

11

Vous devez compiler pour le mode MinGW (Minimal GNU Win32). Vous le faites en installant mingw au lieu de (ou en plus de) cygwin, ou en transmettant l'option de compilateur --mno-cygwin à cygwin gcc.

+0

Mais j'utilise la fonction fourche dans mon programme. Si j'utilise -mno-cygwin, il est dit que fork n'est pas défini. – avd

+2

Ensuite, vous devrez fournir cygwin1.dll à vos utilisateurs. Windows lui-même ne fournit pas d'appel système fork(). Il serait préférable de réécrire votre code pour ne plus utiliser fork. –

1

Voir le Cygwin FAQ.

+0

merci de mentionner la question de licence – Amro

0

De http://cygwin.com/faq/faq.html#faq.programming.win32-no-cygwin

Comment compiler un exécutable Win32 qui n'utilise pas Cygwin?

Les compilateurs fournis par les packages mingw-gcc, mingw64-i686-gcc et mingw64-x86_64-gcc se lient aux DLL Microsoft standard au lieu de Cygwin. Ceci est souhaitable pour les programmes Windows natifs qui n'ont pas besoin d'une couche d'émulation UNIX. Ceci ne doit pas être confondu avec 'MinGW' (Minimalist GNU pour Windows), ce qui est un effort complètement séparé.

Questions connexes