GCCは、ファイル拡張子に基づいてファイルがどの言語であるかを判断できます。
#include <iostream>
int main()
{
std::cout << "Hello world\n";
}
:しかし、GCCは、自動的にあなたの代わりにg++
のgcc
を使用してC++プログラムをコンパイルすることができますが、あなたは-lstdc++
ディレクティブを追加する必要があります意味実際にはC.以外の言語のために、実行時のサポートにリンクしません。より正確にg++ hello.cc
gcc hello.cc -lstdc++
、あなたはあなたが標準ライブラリ、例外、オペレータnew
、またはRTTIを使用している場合-lstdc++
を指定する必要があります。例えば、-lstdc++
せずに次のようにコンパイルしてみてください。
int main()
{
try {
throw 1;
}
catch (int i)
{
return i;
}
}
(std::string
Sを含む)STLコンテナはデフォルトでオペレータnew
を使用することに注意してください。厳密に言えば、-lstdc++
のないアルゴリズム(std::min
、std::find_first_of
など)バインダーなどを標準ライブラリに使用できるはずですが、ほとんどの場合、それを含めることもできます(リンカーは、実際にリンクしていない)。
リンカーコマンドに-lstdC++を含める必要がありました。 – simon