• 締切済み

gccを使ってのリンク時のライブラリの指定法

gccを使って、c++の勉強を始めようとしています。 hello.cpp(どこにでもある一行のプログラム)のコンパイルはできましたが、リンクができません。 私の機械では iostream は /usr/include/c++/3.3.2 にあります。( iostream.hは /usr/include/c++/3.3.2/backward にあります。) また、makefileにこの情報を書くには、どのように書けばよいのでしょうか。

みんなの回答

  • colder
  • ベストアンサー率43% (30/69)
回答No.3

>c++の拡張子を持ったファイルはg++でコンパイルするのですか? g++でコンパイルすると、C++の標準ライブラリを勝手にリンクしてくれる。 gccでコンパイルするときは、-lstdc++でライブラリを明示的に指定しないといけない。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

gccが正しくインストールされていないのではないですか? iostreamのような標準的なライブラリが置かれた場所は,指定しなくてもデフォルトで検索されるはずなのですが.

noname#22708
質問者

お礼

お教えいただきありがとうございます。gccは自分で個別にインストールしたものではなく、CDからシステム全体( Vine 3.2 ) をインストールしたままです。 とりあえずは、No.1の回答していただいたことで、解決しましたが、いろいろなライブラリがあるらしいので、どのように使うのか、さっぱりわかりません。

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.1

#include <iostream> int main(void) { using namespace std; cout << "hello, world" << endl; return 0; } をコンパイルリンクするなら、オプションは必要ありません。 g++ hello.cpp -o hello でいくはずです。 gcc hello.cpp -o hello とやっていませんか?

noname#22708
質問者

お礼

早速にお教えいただきありがとうございます。ご指摘のとおりで、gcc としていました。g++ に変更したらうまくできました。 g++ は gccに統合されたと読んだものですので。 c++の拡張子を持ったファイルはg++でコンパイルするのですか?

関連するQ&A