2009-09-25 15 views
6

Tengo cygwin en windows a través del cual ejecuto gcc. Pero después de crear archivos .exe, si los ejecuto en otras computadoras que no tienen cygwin, dice cygwin1.dll no encontrado. ¿Hay alguna manera de compilarlos para que se ejecuten en cualquier sistema?Compilación con gcc (cygwin en windows)

Respuesta

10

En su caso, tratar de copiar cygwin1.dll también (pero podría depender de otros archivos DLL también) (por supuesto, usted debe cumplir con Cygwin de license en lo que respecta a la distribución de cygwin1.dll)
En cygwin , siempre se puede comprobar usando los módulos necesarios:

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

o

cygcheck ./a.exe 

o para las ventanas en general, usar algo como esta herramienta: Dependency Walker

+0

cygcheck dice: "Error: could not find a.exe" si escribo "cygcheck a.exe" – avd

+2

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

4

Puede intentar compilar con la opción de línea de comando -mno-cygwin.

11

Necesita compilar para el modo MinGW (Minimal GNU Win32). Para ello, instale mingw en lugar de (o además de) cygwin, o pasando la opción del compilador --mno-cygwin a cygwin gcc.

+0

Pero estoy usando la función de horquilla en mi programa. Si uso -mno-cygwin, dice fork no definido. – avd

+2

Luego deberá proporcionar cygwin1.dll a sus usuarios. Windows mismo no proporciona una llamada al sistema fork(). Sería mejor reescribir tu código para no usar más el tenedor. –

1

Ver el Cygwin FAQ.

+0

gracias por mencionar el problema de licencia – Amro

0

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

Cómo puedo compilar un ejecutable de Win32 que no usa Cygwin?

Los compiladores proporcionados por los paquetes mingw-gcc, mingw64-i686-gcc y mingw64-x86_64-gcc enlazan con los archivos DLL estándar de Microsoft en lugar de Cygwin. Esto es deseable para los programas nativos de Windows que no necesitan una capa de emulación UNIX.

Esto no debe confundirse con 'MinGW' (GNU minimalista para Windows), que es un esfuerzo completamente separado.

Cuestiones relacionadas