2017-06-22 5 views
0

のgcc 5.4.0 cygwinの2.8.0 Win10gcc 5.40には標準インクルードファイルが含まれていませんか?

私は以下を参照してください、簡単なプログラムをコンパイルするこのproblem.Whenまわりで私の頭をノックされてきた、私はGCCのいずれかでエラーが発生しますファイルを含めます。 Cygwinのメーリングリストをチェックしたところ、gccのダウンロードに間違いがあると報告した人はいなかったので、それは私の誤解だと思うが、間違ったことは分からない。この時点までに、すべてのgccインクルードファイルが自動的にインクルードされました。ああ、コンパイルは他のライブラリには正しいです。

コードは次のとおり

GCC -std = C++ 11 TEST.CPPまたはGCC TEST.CPPは

は、名前空間STDを使用して、入出力ストリーム

を含みます。

メインINT(INTのARGC、チャー** ARGV){}

、エラーメッセージがある:

/tmp/ccfBvaqg.o:test.cpp:(.text+ 0x44の):std::ios_base::Init::Init()' /tmp/ccfBvaqg.o:test.cpp:(.text+0x44): relocation truncated to fit: R_X86_64_PC32 against undefined symbolのstd :: ios_base ::初期::初期化()」

/tmp/ccfBvaqg.o:test.cpp:(.rdata$.refptr._ZNSt8ios_base4InitD1Ev[.refptr._ZNSt8ios_base4InitD1Ev]+に未定義参照0x0): `std :: ios_base :: Init ::〜Init() 'への参照が未定義

+0

これはインクルードファイルとは関係がありません。リンクエラーです。そして実際には、標準のC++ライブラリ(-lstdC++)にリンクしていません。 – spectras

+0

[定義されていない参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-シンボルエラー&ハウツーi-fix) –

+0

これは有効なコードではありません。 C++コードは 'gcc -std'で始まらず、' include'の前にハッシュ(シャープ記号)があり、ファイル名は '<>'で囲まれています。さらに、これは重複しています。投稿前に*未定義のリファレンス*を検索したことがあれば学んだでしょう。 (さらに、コードはブロック引用符でフォーマットされておらず、コードとしてフォーマットされていますので、キーボードでCtrl + Kを押すか、ツールバーの* {} *ボタンをクリックしてください) –

答えて

1

gccは、Cコンパイラドライバです。コンパイラは、ファイル名に基づいて自動的に言語を検出します。コンパイルが成功した理由です。ただし、リンカはソースファイルの名前の影響を受けません。デフォルトでは、CコンパイラドライバはC++標準ライブラリにリンクしません。

標準ライブラリ(<iostream>は、プログラムの開始時に標準ライブラリ関数を呼び出すだけの非典型的なヘッダーファイルです)を使用しているため、リンクされていないため、リンカー失敗する。解決策はC++標準ライブラリにリンクすることです。最も簡単な方法は、デフォルトで標準ライブラリをリンクするC++コンパイラドライバ(g++)を使用することです。

関連する問題