У меня есть простая программа, которую я могу успешно скомпилировать с помощью clang, используя MinGW C/C++ Library:
#include <stdio.h>
int main(int argc, char **argv) { printf("Hello world!\n"); return 0; }
Я могу успешно скомпилировать это с помощью mingw-gcc:
$ gcc test.c -o test
$ ./test
Hello world!
Я также могу скомпилировать его успешно, используя clang + mingw:
$ clang test.c -o test -target
$ ./test
Hello world!
Однако, если я внесу небольшое изменение в мою программу (включая float.h), она продолжит компиляцию с помощью gcc, но больше не будет компилироваться с помощью clang:
#include <stdio.h>
#include <float.h>
int main(int argc, char **argv) { printf("Hello world!\n"); return 0; }
$ gcc test.c -o test
$ ./test
Hello world!
$ clang test.c -o test -target x86_64-pc-windows-gnu
In file included from test.c:2:
In file included from C:\llvm\built\lib\clang\8.0.0\include\float.h:45:
C:\mingw64-8.1.0\x86_64-w64-mingw32\include\float.h:28:15: fatal error: 'float.h' file not found
#include_next <float.h>
^~~~~~~~~
1 error generated.
Есть ли какая-то проблема с конфигурацией clang или отсутствующий аргумент командной строки? Немного погуглив, кажется, что порядок путей при включении float.h важен, но все это должно обрабатываться внутренне драйвером clang.