web-dev-qa-db-ja.com

g ++を使用して単純なC ++プログラムをコンパイルできない

c++を使用してg++プログラムをコンパイルしようとすると、次のエラーが表示されます。スタックトレースは非常に長く、これは単なるサンプルです。

........... 
/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

コード例ispost_test_5.cpp

#include<iostream>

int main() {

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

そして、私はそれを次のように実行しようとします:

g++ -c post_test_5.cpp

私のgccバージョンとubuntuバージョンは次のとおりです。

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

ただし、gccコマンドを使用して.cファイルをコンパイルすると、すべてが正常に機能します。

何がこれを引き起こしているのでしょうか?

1
Akavall

(少なくとも)ファイル/usr/include/x86_64-linux-gnu/bits/byteswap.hが何らかの形で破損しているようです。テキストエディタで開き、通常のC++ヘッダーファイルのように見えるかどうかを確認します。

この場合は、コマンドSudo apt-get --reinstall install libc6-devを使用してパッケージlibc6-devを再インストールします

そうでない場合は、ファイルpost_test_5.cppの全内容とコンパイルの全出力をここに投稿する必要があります。

4
sмurf