Gcc

在 gcc 中包含語言的標準是什麼?

  • March 14, 2019

根據man gcc,gcc 支持以下語言,您可以通過-xflag 進行選擇:

c  c-header  cpp-output
c++  c++-header  c++-cpp-output
objective-c  objective-c-header  objective-c-cpp-output
objective-c++ objective-c++-header objective-c++-cpp-output
assembler  assembler-with-cpp
ada
f77  f77-cpp-input f95  f95-cpp-input
go
java

將語言放入 gcc 的標準是什麼?顯然,像 C 和 C++ 這樣的語言將出現在 gcc 中,但我對 go 和 java 感到驚訝。

此外,gnu.org 上的 gcc 文件:“GCC 的語言獨立組件包括大多數優化器,以及為各種處理器生成機器程式碼的“後端”。我對編譯器的了解充其量只是基本的,但這是否意味著 gcc 將每種語言解析和詞法分析成某種通用格式,然後從那裡生成某種二進製文件?如果是這種情況,是否會為這些語言中的任何一種編寫與語言無關的 gcc 優化器,例如 C 和 go?

基本上,必須有一個語言前端和任何必要的支持庫,獲得適當許可,質量足夠(程式碼,還有文件和測試),並且有人願意維護它。決策者是GCC 指導委員會

在不遠的過去,有一些語言被添加和刪除的例子。D 於 2011 年成為候選人於 2017 年獲得批准,並在 GCC 8 中可用。另一方面,Java 在經過很長時間後在 GCC 7 中被刪除。

有一些項目可以添加PythonRust,但我認為那裡沒有太多活動。

GCC被分成多個組件;它支持的各種語言由前端實現,前端將程序轉換為中間表示形式,GIMPLE(獨立於語言和機器)。因此,優化器是跨語言共享的。

引用自:https://unix.stackexchange.com/questions/506189