[cfe-users] C/C++ system include dirs when cross-compiling

Patrick Boettcher via cfe-users cfe-users at lists.llvm.org
Thu Mar 31 09:34:56 PDT 2016


On Thu, 31 Mar 2016 12:18:41 -0400
Jeffrey Walton <noloader at gmail.com> wrote:
> > TARGET=aarch64-elf \
> > GCC_ROOT=~/Downloads/gcc-linaro-5.3-2016.02-x86_64_aarch64-elf \
> > ~/devel/upstream/build/bin/clang++ \
> >                 -v \
> >                 --target=$TARGET \
> >                 --gcc-toolchain=$GCC_ROOT/$TARGET \
> >                 --sysroot=$GCC_ROOT/$TARGET/sysroot \
> >                 -nostdlib \
> >                 -o testCCompiler.cpp.obj -c \
> >                 -std=c++11 \
> >                 test.cpp
> >
> > test.cpp is empty except #include <cstdint> which it doesn't find.
> >
> > Linaro's gcc has all include paths in its search list.
> >
> > Thanks in advance for any help,  
> 
> We found Ubuntu (perhaps Debian) broke the cross-compile using
> --sysroot some time ago. Also see "g++-arm-linux-gnueabi cannot
> compile a C++ program with --sysroot",
> https://bugs.launchpad.net/ubuntu/+source/gcc-defaults-armel-cross/+bug/1375071.

I forgot to mention that I'm using llvm/clang 3.8 which I built myself.

> We were working around the broken C++ header includes by specifically
> calling them out with -I. See the comment "Fix C++ header paths for
> Ubuntu" at
> https://github.com/weidai11/cryptopp/blob/master/setenv-embedded.sh#L96.

That's what I did as well to work around.

> ARM's "GCC ARM Embedded Tools" works as expected. Its maintained by
> ARM employees. Also see the PPA at
> https://launchpad.net/gcc-arm-embedded.

Yeah, but is the problem clang not looking into the right paths or
gcc-toolchains having changed their layouts. Comparing older
gcc-toolchains I had in my attic it seems that clang is not looking hard
enough.

--
Patrick.



More information about the cfe-users mailing list