我有一個簡單的,有代表性的C程序,保存在一個名爲hello.c
:如何設置gcc使用文件擴展名(.c或.cpp)來確定正確的編譯器/鏈接器?
#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++中的上下文beendiscussed有,這個問題在出現當gcc嘗試將C庫鏈接到一個C++程序時,這會產生錯誤。在one of the answers中,有人提到擴展確實是問題,並且gcc在編譯C文件時需要擴展.c
,並且在編譯C++文件時需要其他擴展(例如.cpp
)。
問題:如何設置gcc使用文件擴展名來確定使用哪個編譯器,因爲gcc似乎默認爲我的系統上的C++?單獨通過文件擴展名指定語言似乎不夠。如果我使用-x
標誌指定語言,則gcc按預期運行。
gcc -x c hello.c
沒有看見你的編輯之前,我貼我的最後意見(這處理make的隱式規則)。我不打算在這個項目中混用C和C++,但這仍然有助於瞭解。 – 2013-02-11 18:33:26
@RicardoAltamirano,我想大約有一百萬SO用戶會回答這個問題,所以我衝上去放了一個佔位符。 :-) – 2013-02-11 18:35:22
哎呀,那很明顯?顯然C不是我的專長。 – 2013-02-11 18:36:19