Erreur de Compilation: “stddef.h: Aucun fichier ou répertoire”
Chaque fois que j'essaie de compiler ce code, il finit toujours avec cette erreur:
In file included from /usr/include/wchar.h:6:0,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/cwchar:44,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/bits/postypes.h:40,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iosfwd:40,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/ios:38,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/ostream:38,
from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iostream:39,
from test.cpp:1:
/usr/include/sys/reent.h:14:20: fatal error: stddef.h: No such file or directory
#include <stddef.h>
^
compilation terminated.
Le code j'ai essayé de compiler est:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World! :D";
return 0;
}
- Comment êtes-vous pour le compiler?
- essayez
g++ file.cc
où file.cc est le nom de votre fichier (devrait prendre fin en.cc
ou.cpp
). Si vous obtenez toujours le même message d'erreur alors que votre compilateur installation est brisée; lancer le programme d'installation de Cygwin et actualiser votre installation de g++. Vérifiez quegcc
etglibc
sont à jour également. - Nhial j'ai compiler le code avec l'aide de la commande: g++ test.cpp j'ai aussi essayé de g++ test.cpp -o main.
- McNabb: j'ai ré-installé, g++, mais il me donne toujours cette erreur, où puis-je trouver la gcc et glibc?
- Dans le programme d'installation de cygwin, même page que g++
- Je ne le trouve pas, je suis même en cherchant au bon endroit? i.imgur.com/pyd9FZU.png Edit: fail, je ne peux pas poster l'image, je vais juste poster un lien avec elle...
Vous devez vous connecter pour publier un commentaire.
L'erreur est parce que votre gcc-core package et gcc-g++ ne sont pas de la même version. Soit rétrograder l'un d'entre eux pour résoudre le problème ou de mettre à jour les bibliothèques. En mettant à jour les bibliothèques est la méthode recommandée.
pact update gcc-core gcc-g++
.sage remove gcc-core gcc-g++ && sage install gcc-core gcc-g++
pact update cygwin-devel
.J'ai eu cette erreur sur une nouvelle installer MinGW, il n'avait rien à voir avec les paquets installés mentionné dans le courant accepté de répondre par "Prasanth Karri". Dans mon cas, le problème a été causé par "-nostdinc" dans mon Makefile. J'ai fait seulement nécessaire que le compilateur drapeau lors de la construction d'une autre plate-forme cible (pas lors de l'utilisation de MinGW) donc j'ai résolu le problème en supprimant le drapeau de MinGW construit.
Quand j'étais en intégrant un logiciel de bibliothèque écrite en C dans un projet de démonstration(utilisé en C++ mbed bibliothèque), j'ai rencontré ce problème. Le projet de démonstration de dresser très bien, mais après j'ai remplacé le principal existant fichier par ma propre, cette erreur s'est produite.
À ce point, je n'avais pas encore pensé au fait que le mbed bibliothèque que j'avais besoin a été écrit en C++. Mon propre fichier principal était une .c fichier
#include
le mbed fichier d'en-tête. Par conséquent, j'ai utilisé mon C normale de la source, comme si c'était un source C++. Donc le compilateur qui a été utilisé pour compiler mon fichier principal était la compilateur C.Ce compilateur C alors rencontré un
#include
d'un module qui en fait n'existe pas (à l'intérieur de son champ d'application), comme il n'est pas un compilateur C++.Seulement après que j'ai inspecté la sortie du journal de génération, j'ai réalisé que les différents fichiers C et C++ ont été compilées par plus de 1 compilateur(le compilateur c++). Le projet a utilisé utilisé compilateurs arm-none-eabi-c++ et arm-none-eabi-gcc (pour les systèmes embarqués) comme on le voit ci-dessous.
Compiler journal:
Bien sûr, dans un environnement C++cstddef existe, mais dans un environnement en C cstddef n'existe pas, à la place, c'est juste C de la mise en œuvre de stddef.
En d'autres termes, cstddef n'existe pas dans le compilateur C.
J'ai résolu ce problème en renommant mon principal.fichier c à main.cpp et le reste du code compilé en douceur aussi.
TLDR/Conclusion: Lors de la construction d'un projet C++, d'éviter de mélanger les C les fichiers avec les fichiers de C++ (sources et les en-têtes). Si possible renommer .c fichiers .rpc fichiers pour utiliser le compilateur C++ au lieu de le compilateur C si nécessaire.