jak zmienić kolejność systemu obejmuje w mingw pod cygwin?

0

Próbuję użyć mingw32 pod cygwin32 do kompilacji krzyżowej. Jednak pojawia się błąd dotyczący 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);

Znalazłem tutaj artykuł z podobnym problemem:

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

i zasugerowali zmianę kolejności dołączeń, aby mingw float.h został znaleziony przed gcc float.h.

Jeśli jednak spróbuję dołączyć nagłówek ręcznie tak:

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

za pomocą opcji szczegółowej pojawia się komunikat, że moja opcja dołączania została zignorowana, ponieważ „jest katalogiem niesystemowym, który duplikuje katalog systemowy”.

Domyślam się, że wywołanie i686-w64-mingw32-gcc automatycznie obejmuje ten katalog, jeśli zainstalowałem biblioteki mingw i źródło dla cygwina, co zrobiłem.

W pełnych danych wyjściowych kompilatora wyraźnie widzę problem w kolejności włączeń.

/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

Ale w jaki sposób przenieść element mingw przed zestawem gcc?

James Joshua Street
źródło

Odpowiedzi:

0

Zrozumiałem, że możesz użyć flagi gcc -nostdinc, a następnie po prostu przedefiniować zlecenia uwzględnienia.

Nie jestem pewien, dlaczego moje wcześniejsze wyszukiwania w Google go nie znalazły.

James Joshua Street
źródło