Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
753 views
in Technique[技术] by (71.8m points)

c - arm-linux-gnu-gcc fatal error: stdio.h: No such file or directory

These are the files in /usr/bin

[root@xilinx bin]# ls -ld arm*
-rwxr-xr-x. 1 root root  691752 Feb  5  2013 arm-linux-gnu-addr2line
-rwxr-xr-x. 1 root root  721416 Feb  5  2013 arm-linux-gnu-ar
-rwxr-xr-x. 1 root root 1297632 Feb  5  2013 arm-linux-gnu-as
-rwxr-xr-x. 1 root root  689168 Feb  5  2013 arm-linux-gnu-c++filt
-rwxr-xr-x. 1 root root  545664 Feb  6  2013 arm-linux-gnu-cpp
-rwxr-xr-x. 1 root root   34176 Feb  5  2013 arm-linux-gnu-elfedit
-rwxr-xr-x. 1 root root  544624 Feb  6  2013 arm-linux-gnu-gcc
-rwxr-xr-x. 1 root root  214400 Feb  6  2013 arm-linux-gnu-gcov
-rwxr-xr-x. 1 root root  760640 Feb  5  2013 arm-linux-gnu-gprof
-rwxr-xr-x. 2 root root 1177528 Feb  5  2013 arm-linux-gnu-ld
-rwxr-xr-x. 2 root root 1177528 Feb  5  2013 arm-linux-gnu-ld.bfd
-rwxr-xr-x. 1 root root  704672 Feb  5  2013 arm-linux-gnu-nm
-rwxr-xr-x. 1 root root  875456 Feb  5  2013 arm-linux-gnu-objcopy
-rwxr-xr-x. 1 root root 1096992 Feb  5  2013 arm-linux-gnu-objdump
-rwxr-xr-x. 1 root root  721456 Feb  5  2013 arm-linux-gnu-ranlib
-rwxr-xr-x. 1 root root  389040 Feb  5  2013 arm-linux-gnu-readelf
-rwxr-xr-x. 1 root root  693608 Feb  5  2013 arm-linux-gnu-size
-rwxr-xr-x. 1 root root  691648 Feb  5  2013 arm-linux-gnu-strings
-rwxr-xr-x. 1 root root  875456 Feb  5  2013 arm-linux-gnu-strip

I am following this tutorial to cross compile a simple C program:

/* myinit.c
 * Build instructions:
 * ${CROSS_COMPILE}gcc -static init.c -o init
 * */

#include <stdio.h>

int
main ()
{
    printf ("
");
    printf ("Hello world from %s!
", __FILE__);
    while (1) { }
    return 0;
}

Now I save this is a .c file and try to compile it;

[root@xilinx Xilinx-ZC702-14.7]# arm-linux-gnu-gcc myinit.c 
myinit.c:6:19: fatal error: stdio.h: No such file or directory
compilation terminated.

This is hapening only when I am using arm-linux-gnu-gcc.

But when I am using gcc, it works fine.

Why is arm-linux* giving this error?

Update

[root@xilinx Xilinx-ZC702-14.7]# arm-linux-gnu-cpp -Wp,-v
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabi/4.7.2/../../../../arm-linux-gnueabi/sys-include"
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabi/4.7.2/../../../../arm-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/arm-linux-gnueabi/4.7.2/include
 /usr/lib/gcc/arm-linux-gnueabi/4.7.2/include-fixed
End of search list.

Verbose

[root@xilinx Xilinx-ZC702-14.7]# arm-linux-gnu-gcc -v myinit.c 
Using built-in specs.
COLLECT_GCC=arm-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-linux-gnueabi/4.7.2/lto-wrapper
Target: arm-linux-gnueabi
Configured with: ../gcc-4.7.2-20121114-aarch64/configure --disable-dependency-tracking --disable-silent-rules --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=arm-linux-gnueabi --enable-targets=all --program-prefix=arm-linux-gnu- --enable-languages=c --with-newlib --without-headers --disable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath --disable-gold --disable-decimal-float --enable-checking= --enable-gnu-unique-object --enable-linker-build-id --disable-plugin --enable-nls --with-system-zlib --with-bugurl=http://bugzilla.redhat.com/bugzilla/ --enable-obsolete
Thread model: single
gcc version 4.7.2 20121105 (Red Hat 4.7.2-2.aa.20121114svn) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-mtls-dialect=gnu'
 /usr/libexec/gcc/arm-linux-gnueabi/4.7.2/cc1 -quiet -v myinit.c -quiet -dumpbase myinit.c -mtls-dialect=gnu -auxbase myinit -version -o /tmp/ccZNNlzj.s
GNU C (GCC) version 4.7.2 20121105 (Red Hat 4.7.2-2.aa.20121114svn) (arm-linux-gnueabi)
    compiled by GNU C version 4.4.6 20120305 (Red Hat 4.4.6-4), GMP version 4.3.1, MPFR version 2.4.1, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabi/4.7.2/../../../../arm-linux-gnueabi/sys-include"
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabi/4.7.2/../../../../arm-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/arm-linux-gnueabi/4.7.2/include
 /usr/lib/gcc/arm-linux-gnueabi/4.7.2/include-fixed
End of search list.
GNU C (GCC) version 4.7.2 20121105 (Red Hat 4.7.2-2.aa.20121114svn) (arm-linux-gnueabi)
    compiled by GNU C version 4.4.6 20120305 (Red Hat 4.4.6-4), GMP version 4.3.1, MPFR version 2.4.1, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: a19a7c6897fa348d9d5b59c718fa0648
myinit.c:6:19: fatal error: stdio.h: No such file or directory
compilation terminated.

Host configuration

Redhat 6, 64 bit

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The problem here, it seems, is that you installed the compiler toolchain for the target, but didn't install a standard library for the target. You need a standard C library compiled specifically for your target platform. Either find a pre-compiled from the same place you found the compiler toolchain, or download one and cross-compile using the target toolchain.

When you have a standard C library for the target, use the flag -I (that's uppercase i) to tell the compiler where to find the header files, and the -L flag to tell the linker where to find the libraries, and e.g. -lc (that's the lower-case L) to tell the linker to link with the library. Something like

$ arm-linux-gnu-gcc -I/usr/local/target/include myinit.c -L/usr/local/target/lib -lc

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...