という名前のファイルに保存された、単純で代表的な C プログラムがありますhello.c
。
#include <stdio.h>
int main(void)
{
printf('Hello, world\n');
return 0;
}
Linux マシンで、gcc を使用してプログラムをコンパイルしようとしました。
gcc hello.c
エラーを返します:
undefined reference to "___gxx_personality_v0" ... etc
C++ のコンテキストで前に説明した ように、この問題は、gcc が C ライブラリを C++ プログラムにリンクしようとするリンク段階で発生し、エラーが発生します。回答の1つで、誰かが拡張子が重要であり、Cファイルをコンパイルするときにgccに拡張子が必要であり、C++ファイルをコンパイルするときに他の拡張子(たとえば)が必要であると述べました。.c
.cpp
質問:私のシステムでは gcc がデフォルトで C++ になっているように見えるので、使用するコンパイラを決定するためにファイル拡張子を使用するように gcc を設定するにはどうすればよいですか? ファイル拡張子だけで言語を指定するだけでは十分ではないようです。-x
フラグを使用して言語を指定すると、gcc は期待どおりに機能します。
gcc -x c hello.c