是否有可能爲gcc寫一個參數,以至於它會認爲它的G ++?爲gcc提供什麼編譯器參數才能認爲它是g ++?
回答
這documentation狀態中,存在一個標誌-x
指定語言:
gcc -x c++ ...
你爲什麼要這麼做?據我所知,唯一的區別是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++程序有意義的選項。
'g ++'還指定'-lm',如果您的構建系統設計爲檢測並投訴不必要的共享庫依賴項,則可能會導致問題。 – Tom 2011-04-30 03:55:06
'GCC' 是 'GNU編譯器集'。如果你傳遞一個C++文件,它會調用C++編譯器'g ++'。
儘管如此,'gcc'和'g ++'不能在C++文件中互換。 gcc運行g ++,並附加了一些額外的參數,我無法記住我的頭頂。
當你編譯C++文件時,我總是使用g ++
- 1. 爲什麼編譯器不提供默認的operator =模板類?
- 2. 爲什麼C++編譯器(gcc)認爲函數是「虛擬」字段?
- 3. 爲什麼「case :: LABEL:」在g ++中編譯?
- 4. 模擬Microsoft C編譯器行爲的GCC選項是什麼?
- 5. 當編譯gcc/g ++/libstdC++時,--enable-threads = LIB是什麼意思?
- 6. 爲什麼編譯器認爲這個類是抽象的(C++)?
- 7. 爲什麼不提供任何參數
- 8. 爲什麼IHttpAsyncHandler提供extraData參數?
- 9. 爲什麼C++編譯器不能推斷模板參數?
- 10. 什麼是g ++ - 3/gcc-3?
- 11. 爲什麼我的.c編碼不能在GCC中編譯?
- 12. 爲什麼在容器(JBOSS)提供它時,RestEasy在pom.xml中編譯的範圍是什麼?
- 13. zend框架zend_db:它爲逃避sql參數提供了什麼
- 14. 爲什麼不能編譯?
- 15. 爲什麼gcc不會將類聲明編譯爲引用參數?
- 16. 爲什麼這個代碼不能在g ++中編譯
- 17. 爲什麼編譯器不能捕獲這個函數,它有什麼作用?
- 18. 爲什麼gcc編譯器允許在不提供數據類型的情況下分配值?
- 19. 爲什麼gcc可以編譯C++代碼但不能鏈接?
- 20. 爲什麼gcc不能一致地編譯這段代碼?
- 21. 爲什麼默認編譯器標誌在gcc行中不顯示?
- 22. 默認情況下,MinGW爲什麼不安裝gcc 4.x.x系列編譯器?
- 23. 爲什麼main()在g ++編譯器中編譯,而不是在Visual Studio IDE中編譯
- 24. 爲什麼GCC交叉編譯器找不到所有庫?
- 25. arm gcc默認編譯它的libc
- 26. 爲什麼編譯器認爲這是一個Object而不是DataRow?
- 27. 爲什麼編譯器認爲Environment.Exit可以返回?
- 28. 爲什麼這段代碼不能用MS編譯器編譯?
- 29. 當提供默認值時,爲count-type參數提供Argparse TypeError
- 30. 爲什麼默認的方法參數必須是C#編譯時常量
gcc是否已經檢測到文件擴展名並啓動了相應的工具? – ereOn 2011-04-28 20:34:34