Descobriu que você pode usar o gcc flag -nostdinc e depois redefinir os pedidos de inclusão.
Não sei por que minhas pesquisas anteriores no Google não o encontraram.
Eu estou tentando usar o mingw32 sob cygwin32 para crosscompile. No entanto, recebo um erro envolvendo 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);
Encontrei um artigo com um problema semelhante aqui:
e eles sugeriram mudar a ordem dos includes para que o mingw float.h seja encontrado antes do gcc float.h.
No entanto, se eu tentar incluir o cabeçalho manualmente da seguinte forma:
i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I /cygdrive/d/Cygwin32/usr/i686-w64-mingw32/sys-root/mingw/include
usando a opção verbose, então recebo uma mensagem dizendo que meu include foi ignorado porque "é um diretório não-sistema que duplica um diretório do sistema."
Meu palpite é que ao chamar i686-w64-mingw32-gcc inclui automaticamente esse diretório se eu tiver instalado as bibliotecas mingw e o source para cygwin, o que eu fiz.
Na saída detalhada do compilador, posso ver claramente o problema na ordem dos includes.
/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
Mas como faço para mover a inclusão do mingw na frente dos includes do gcc?
Descobriu que você pode usar o gcc flag -nostdinc e depois redefinir os pedidos de inclusão.
Não sei por que minhas pesquisas anteriores no Google não o encontraram.