#include <iostream>

using namespace std;
int main()
{
cout << "test";
return 0;
}


というプログラムをCygwinのgccコマンドでコンパイルしようとしたら、以下の様なエラーメッセージが大量に出てきます。
ソースのほうは間違いようのないようなものなので、環境設定等の問題だとは思うのですが、どうすればコンパイルできるようになるのでしょうか?

エラーメッセージのうちの1つ
/cygdrive/c/DOCUME~1/ユーザー名/LOCALS~1/Temp/ccIqjcOV.o:test.cpp(.text+0x17e): undefined reference to 'std::ios_base::Init::Init()'

こういう感じで、includeしたiostream関係のメソッド・プロパティすべてにエラーが出ます。

最初は、stdクラスのメソッドなどのreferenceが定義されてないということなので、std::coutやcinなどがヘッダファイルで定義されているだけで、本体が提供されていないと思って、Cygwinをフルでインストールし直したのですが、同じようなエラー群がが出ました。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/11/09 14:01:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:amachang No.2

回答回数15ベストアンサー獲得回数3

ポイント28pt

http://example.com/ (URL はダミーです。)

libstdc++.so がリンクされていないのではないでしょうか。

$ gcc -lstdc++ test.cpp

または

$ g++ test.cpp

それでもダメなら libstdc++.so があるディレクトリを探して

$ gcc -Lディレクトリのパス -lstdc++ test.cpp

で出来ると思います。

id:atmarkbienna

友人にもlibstrc++が足りないのではとは言われました。

詳細な解説ありがとうございます。

2008/11/09 13:59:46

その他の回答3件)

id:zzz_1980 No.1

回答回数492ベストアンサー獲得回数64

ポイント28pt

gcc じゃなくて g++ としてください。

本題ではありませんが、

using namespace std;

は mainのなかに入れちゃったほうがいいです。(ほかで参照しているとしても)

http://www.hatena.ne.jp

id:atmarkbienna

ありがとうございます。test.exeがちゃんと生成されました。

2008/11/09 13:58:38
id:amachang No.2

回答回数15ベストアンサー獲得回数3ここでベストアンサー

ポイント28pt

http://example.com/ (URL はダミーです。)

libstdc++.so がリンクされていないのではないでしょうか。

$ gcc -lstdc++ test.cpp

または

$ g++ test.cpp

それでもダメなら libstdc++.so があるディレクトリを探して

$ gcc -Lディレクトリのパス -lstdc++ test.cpp

で出来ると思います。

id:atmarkbienna

友人にもlibstrc++が足りないのではとは言われました。

詳細な解説ありがとうございます。

2008/11/09 13:59:46
id:hiro_4455 No.3

回答回数1ベストアンサー獲得回数0

ポイント22pt

以前私も"gcc"コマンドを使用するとこのような結果になったことがあります。

gccを使った場合c++用に色々オプションをつける必要があるので、

"g++"コマンドを使用すると良いのではないでしょうか。

http://www.linux.or.jp/JM/html/GNU_gcc/man1/g++.1.html

id:atmarkbienna

ありがとうございます。

2008/11/09 14:00:01
id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント17pt

そのソースはC++のようなので、g++でコンパイルしてみてはどうでしょうか。

id:atmarkbienna

ありがとうございます。gccはC用なのですね。

2008/11/09 14:00:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません