2011-04-28 42 views

回答

5

你爲什麼要這麼做?據我所知,唯一的區別是g++此外還將-lstdc++傳遞給鏈接器,以鏈接C++標準庫。

因此,如果您將該選項傳遞給GCC,它應該將其轉發給鏈接器,並且都應該沒事。但我真的沒有看到這樣做的理由。只需使用g++即可。

也就是說,我以前用過gcc來編譯C++代碼。當我有一堆文件,混合的C++和C代碼時,我只編譯了所有使用gcc的文件,因爲g++默認爲.c爲C++代碼,當C代碼使用new作爲標識符時,會破壞構建。添加-lstdc++一直很好地工作。

參見GCC手冊頁

編譯C++程序

C++源文件通常使用後綴.C,.CC,的.cpp,.CPP,.C++之一,.cp,或.cxx; C++頭文件經常使用.hh,.hpp,.H, 或(對於共享模板代碼).tcc;並且預處理的C++文件使用後綴.ii。 GCC可以識別具有這些名稱的文件,並將它們編譯爲C++程序,即使您以與編譯C程序(通常名稱爲gcc)相同的方式調用編譯器。

但是,使用gcc並沒有添加C++庫。 g ++是一個調用GCC並將.c,.h和.i文件作爲C++源文件 而不是C源文件的程序,除非使用-x,並且自動指定與C++庫的鏈接。當預編譯帶有.h擴展名的C頭文件以用於C++編譯時,此程序也很有用。在許多系統上,g ++也安裝了名稱C++。

當您編譯C++程序時,您可以指定許多用於編譯任何語言程序的命令行選項; 或對C語言和相關語言有意義的命令行選項;或僅對C++程序有意義的選項。

+0

'g ++'還指定'-lm',如果您的構建系統設計爲檢測並投訴不必要的共享庫依賴項,則可能會導致問題。 – Tom 2011-04-30 03:55:06

1

'GCC' 是 'GNU編譯器集'。如果你傳遞一個C++文件,它會調用C++編譯器'g ++'。

儘管如此,'gcc'和'g ++'不能在C++文件中互換。 gcc運行g ++,並附加了一些額外的參數,我無法記住我的頭頂。

當你編譯C++文件時,我總是使用g ++

相關問題