arm-linux-gnu-gcc erreur fatale: stdio.h: Aucun fichier ou répertoire
Ce sont les fichiers dans /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
Je suis ce tutoriel de cross compiler un simple programme C:
/* myinit.c
* Build instructions:
* ${CROSS_COMPILE}gcc -static init.c -o init
* */
#include <stdio.h>
int
main ()
{
printf ("\n");
printf ("Hello world from %s!\n", __FILE__);
while (1) { }
return 0;
}
Maintenant je la garde est un .c fichier et essayez de compiler;
[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.
C'est hapening seulement quand je suis à l'aide de l'arm-linux-gnu-gcc.
Mais quand je suis à l'aide de gcc, il fonctionne très bien.
Pourquoi est-arm-linux* donner à cette erreur?
Mise à jour
[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.
Détaillé
[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.
De configuration de l'hôte
Redhat 6, 64 bits
On dirait que vous devez spécifier un répertoire où la
Avez-vous installé une bibliothèque standard C pour votre cible? Vous devez indiquer au compilateur et l'éditeur de liens où le trouver.
Possible dup stackoverflow.com/questions/8877359/...
essayez de trouver où la stdio.h etc fixe et utilise gcc est sysroot passer emplacement.
Les fichiers dans
stdio.h
peuvent être inclus par l' -I dir
option pour le compilateur.Avez-vous installé une bibliothèque standard C pour votre cible? Vous devez indiquer au compilateur et l'éditeur de liens où le trouver.
Possible dup stackoverflow.com/questions/8877359/...
essayez de trouver où la stdio.h etc fixe et utilise gcc est sysroot passer emplacement.
Les fichiers dans
/usr/include
et /usr/lib
sont pour le accueil plate-forme, qui peut ne pas être le même que le cible plate-forme.
OriginalL'auteur gpuguy | 2014-04-11
Vous devez vous connecter pour publier un commentaire.
Le problème ici, il me semble, c'est que vous avez installé le compilateur chaîne d'outils pour la cible, mais n'a pas d'installer une bibliothèque standard pour la cible. Vous avez besoin d'une bibliothèque standard C compilé spécifiquement pour votre plate-forme cible. Soit trouver un pré-compilé à partir du même endroit que vous avez trouvé le compilateur de la chaîne, ou en télécharger un et le cross-compiler à l'aide de la cible de la chaîne d'.
Quand vous avez une bibliothèque standard C pour la cible, utilisez le drapeau
-I
(majuscule i) pour indiquer au compilateur où trouver les fichiers d'en-tête, et le-L
drapeau de dire à l'éditeur de liens où trouver les bibliothèques, et l'exemple de-lc
(c'est le bas-de-casse L) pour indiquer à l'éditeur de liens pour créer un lien avec la bibliothèque. Quelque chose commeOriginalL'auteur Some programmer dude
Ce suis fixé pour moi par l'installation de "arm-none-eabi-newlib"
Contient les fichiers requis dans le droit chemin.
OriginalL'auteur Mahmoud Mostafa
Les plus susceptibles problème ici est que l'sysroot chemin n'est pas défini lors de ce cross compilateur a été généré. La suite d'outils développeurs ont leurs propres raisons de le faire. Vous pouvez le vérifier en faisant
La suite d'outils développeurs attendent de nous de l'utiliser à des variables d'environnement comme ${CXX} ${CC} pour la compilation croisée. Ils ont généralement un script prévu à cet effet que, entre autres choses, est le suivant.
Donc, pour l'élaboration de votre *.programme c, dans ce cas, myinit.c, vous le feriez.
Ou si vous comme moi, nous sommes de la vieille école ferait
OriginalL'auteur Vendetta V