[cfe-dev] C++11 freestanding headers not found
Richard Smith via cfe-dev
cfe-dev at lists.llvm.org
Mon Jun 12 15:55:46 PDT 2017
On 12 June 2017 at 13:54, Modulo De Pi via cfe-dev <cfe-dev at lists.llvm.org>
wrote:
> Hello everyone,
>
> I've recently discovered the LLVM project and Clang, and I am quite happy
> with it (nice piece of work!). However, I can't figure why this fails:
>
> $ cat > freestanding.cpp
> #include <cstdint>
> $ clang -c -std=c++11 -ffreestanding --target=i386-none-elf
> freestanding.cpp
> bug.cpp:1:10: fatal error: 'cstdint' file not found
> #include <cstdint>
> ^
> 1 error generated.
> $
>
> Trying to compile a source file that merely includes a C++11 header file
> with the -ffreestanding flag just fails. The same problem occurs for every
> C++11 freestanding header (<cstdint>, <cstddef>, <climits>...). However,
> trying to include the pre-C++11 freestanding headers (<stdint.h>,
> <stddef.h>, <limits.h>, ...) works just fine. I have also tried different
> targets.
>
> Any idea? Is this some configuration issue? Or some glitch? I can hardly
> find any information about this problem, this is why I am asking you people.
>
Clang does not provide an implementation of the freestanding C++ headers;
you need a C++ standard library (typically libc++ or libstdc++) installed
to provide those. (You also need a C standard library to provide the foo.h
headers that the C++ standard library itself depends on.)
For certain C standard library headers, there is an informal arrangement
between the C standard library implementation and the compiler that the
compiler will provide certain of the headers -- stddef.h, stdarg.h, and a
few others (which need or significantly benefit from compiler magic) --
although the compiler's version will often defer to the C stdlib version if
it exists. But this does not extend to a complete set of freestanding
headers.
If you have a C++ standard library installed, Clang should automatically
detect it. If it doesn't, we'd want:
* the output of clang -v when compiling a C++ source file
* information about where the standard library was installed
to determine why it wasn't automatically found.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170612/bad173ac/attachment.html>
More information about the cfe-dev
mailing list