Wie ändere ich die Reihenfolge der System-Includes in Mingw unter Cygwin?

Wie ändere ich die Reihenfolge der System-Includes in Mingw unter Cygwin?

Ich versuche, mingw32 unter cygwin32 zum Cross-Compilieren zu verwenden. Allerdings erhalte ich einen Fehler mit 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);

Ich habe hier einen Artikel mit einem ähnlichen Problem gefunden:

https://www.cygwin.com/ml/cygwin/2003-07/msg00525.html

und sie schlugen vor, die Reihenfolge der Includes zu ändern, sodass mingw float.h vor gcc float.h gefunden wird.

Wenn ich jedoch versuche, den Header manuell wie folgt einzufügen:

i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I /cygdrive/d/Cygwin32/usr/i686-w64-mingw32/sys-root/mingw/include

Wenn ich die ausführliche Option verwende, erhalte ich die Meldung, dass mein Include ignoriert wurde, weil „es sich um ein Nicht-Systemverzeichnis handelt, das ein Systemverzeichnis dupliziert.“

Ich vermute, dass durch den Aufruf von i686-w64-mingw32-gcc dieses Verzeichnis automatisch eingeschlossen wird, sofern ich die Mingw-Bibliotheken und den Quellcode für Cygwin installiert habe, was ich getan habe.

In der ausführlichen Ausgabe des Compilers kann ich das Problem in der Reihenfolge der Includes deutlich erkennen.

/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

Aber wie verschiebe ich das Mingw-Include vor die GCC-Includes?

Antwort1

Habe herausgefunden, dass Sie das GCC-Flag -nostdinc verwenden und dann einfach die Include-Reihenfolgen neu definieren können.

Ich bin nicht sicher, warum ich es bei meinen früheren Google-Suchen nicht gefunden habe.

verwandte Informationen