
Estoy intentando utilizar mingw32 en cygwin32 para realizar una compilación cruzada. Sin embargo, aparece un error relacionado con float.h
In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/winnt.h:16:0,
from /usr/i686-w64-mingw32/sys-root/mingw/include/minwindef.h:146,
from /usr/i686-w64-mingw32/sys-root/mingw/include/windef.h:8,
from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:69,
from globals.h:17,
from globals.c:10:
/usr/i686-w64-mingw32/sys-root/mingw/include/float.h:278:57: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
_CRTIMP double __cdecl __MINGW_NOTHROW _chgsign (double _X);
Encontré un artículo con un problema similar aquí:
https://www.cygwin.com/ml/cygwin/2003-07/msg00525.html
y sugirieron cambiar el orden de las inclusiones para que mingw float.h se encuentre antes que gcc float.h.
Sin embargo, si intento incluir el encabezado manualmente de esta manera:
i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I /cygdrive/d/Cygwin32/usr/i686-w64-mingw32/sys-root/mingw/include
Al usar la opción detallada, aparece un mensaje que dice que mi inclusión fue ignorada porque "es un directorio que no pertenece al sistema y que duplica un directorio del sistema".
Supongo que al llamar a i686-w64-mingw32-gcc se incluye automáticamente ese directorio si instalé las bibliotecas mingw y la fuente de cygwin, lo cual hice.
En la salida detallada del compilador puedo ver claramente el problema en el orden de las inclusiones.
/usr/lib/gcc/i686-w64-mingw32/4.8.3/include
/usr/lib/gcc/i686-w64-mingw32/4.8.3/include-fixed
/usr/i686-w64-mingw32/sys-root/mingw/include
Pero, ¿cómo muevo la inclusión mingw delante de la inclusión gcc?
Respuesta1
Lo descubrí que puedes usar el indicador gcc -nostdinc y luego simplemente redefinir las órdenes de inclusión.
No estoy seguro de por qué mis búsquedas anteriores en Google no lo encontraron.