人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

#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をフルでインストールし直したのですが、同じようなエラー群がが出ました。

●質問者: atmarkbienna
●カテゴリ:コンピュータ
✍キーワード:cygwin gcc STD test インストール
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● zzz_1980
●28ポイント

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

本題ではありませんが、

using namespace std;

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

http://www.hatena.ne.jp

◎質問者からの返答

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


2 ● amachang
●28ポイント ベストアンサー

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

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

$ gcc -lstdc++ test.cpp

または

$ g++ test.cpp

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

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

で出来ると思います。

◎質問者からの返答

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

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


3 ● hiro_4455
●22ポイント

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

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

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

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

◎質問者からの返答

ありがとうございます。


4 ● pahoo
●17ポイント

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ