web-dev-qa-db-fra.com

Impossible de compiler un programme C ++ simple en utilisant g ++

Lorsque j'essaie de compiler un programme c++ à l'aide de g++, l'erreur suivante apparaît, la trace de la pile est très longue, il ne s'agit que d'un exemple:

........... 
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\330’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\330’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\340’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\5’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\260’ in program
In file included from /usr/include/endian.h:60:0,
                 from /usr/include/ctype.h:39,
                 from /usr/include/c++/4.8/cctype:42,
                 from /usr/include/c++/4.8/bits/localefwd.h:42,
                 from /usr/include/c++/4.8/ios:41,
                 from /usr/include/c++/4.8/ostream:38,
                 from /usr/include/c++/4.8/iostream:39,
                 from post_test_5.cpp:1:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:1:1: error: expected unqualified-id before numeric constant
/usr/include/x86_64-linux-gnu/bits/byteswap.h:11:2: error: expected unqualified-id before numeric constant
In file included from /usr/include/endian.h:60:0,
                 from /usr/include/ctype.h:39,
                 from /usr/include/c++/4.8/cctype:42,
                 from /usr/include/c++/4.8/bits/localefwd.h:42,
                 from /usr/include/c++/4.8/ios:41,
                 from /usr/include/c++/4.8/ostream:38,
                 from /usr/include/c++/4.8/iostream:39,
                 from post_test_5.cpp:1:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:26:31: error: expected declaration before ‘}’ token

Et exemple de code ispost_test_5.cpp:

#include<iostream>

int main() {

  std::cout << "Hello World" << std::endl;
  return 0;
}

Et j'essaye de le lancer comme:

g++ -c post_test_5.cpp

Ma version gcc et les versions d'ubuntu sont:

gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
kirill@kirill-ThinkPad-X140e:~/CPlusPlusStuff/PostTest$ lsb_release -d
Description:    Ubuntu 14.04 LTS

Cependant, lorsque j'utilise la commande gcc pour compiler le fichier .c, tout fonctionne correctement.

Qu'est-ce qui pourrait éventuellement être la cause de cela?

1
Akavall

Il semble que (au moins) le fichier /usr/include/x86_64-linux-gnu/bits/byteswap.h ait été corrompu. Ouvrez-le avec un éditeur de texte et vérifiez s'il ressemble à un fichier d'en-tête C++ normal.

Si tel est le cas, réinstallez le paquet libc6-dev avec la commande Sudo apt-get --reinstall install libc6-dev

Si ce n'est pas le cas, vous devrez publier ici le contenu intégral du fichier post_test_5.cpp ainsi que la sortie complète de la compilation.

4
sмurf