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をフルでインストールし直したのですが、同じようなエラー群がが出ました。
http://example.com/ (URL はダミーです。)
libstdc++.so がリンクされていないのではないでしょうか。
$ gcc -lstdc++ test.cpp
または
$ g++ test.cpp
それでもダメなら libstdc++.so があるディレクトリを探して
$ gcc -Lディレクトリのパス -lstdc++ test.cpp
で出来ると思います。
gcc じゃなくて g++ としてください。
本題ではありませんが、
using namespace std;
は mainのなかに入れちゃったほうがいいです。(ほかで参照しているとしても)