简体   繁体   中英

Clang cross-compilation for ARM

I'm trying to compile a file containing stdint.h for ARM (specifically Cortex-M3) using arm-none-eabi (which is a Debian's package) headers. The command is:

clang -I/usr/lib/gcc/arm-none-eabi/4.8/include \
    -target arm-none-eabi cfile.c -o cfile.o

( -mcpu , -mfpu , -mfloat-abi are left out for simplicity)

Returns an error:

In file included from cfile.c:1:
In file included from ./cfile.h:4:
In file included from /usr/lib/gcc/arm-none-eabi/4.8/include/stdint.h:9:
In file included from /usr/lib/llvm-3.5/bin/../lib/clang/3.5.0/include/stdint.h:61:
In file included from /usr/include/stdint.h:25:
/usr/include/features.h:374:12: fatal error: 'sys/cdefs.h' file not found
#  include <sys/cdefs.h>
           ^
1 error generated.

I've been generally following this guide .

My versions:

$ clang --version
Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)

$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)

Any ideas on how to approach solving this?

PS: Not a duplicate of this question .

To solve this issue you have to install g++-multilib
g++-multilib - the GNU C++ compiler, a fairly portable optimizing compiler for C++. It will install required headers.

As an answer for sysroot option (from comments section): You are absolutely right sysroot supposed to be used with cross-compilers installed from zips. It was not clear from a question which compiler you are trying to use.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM