에 따르면 man gcc
gcc는 다음 언어를 지원하며 플래그를 사용하여 선택할 수 있습니다 -x
.
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와 같은 언어에 대해 작동합니까?
답변1
기본적으로 언어 프런트엔드와 필요한 지원 라이브러리가 있어야 하며, 적절하게 라이선스가 부여되고, 충분한 품질(코드는 물론 문서 및 테스트도 포함)을 갖추고 이를 유지하려는 사람들이 있어야 합니다. 의사결정자는GCC 운영위원회.
가까운 시일 내에 언어가 추가되거나 제거되는 예가 있습니다.D는 2011년에 후보가 됐다.,2017년에 승인됨GCC 8에서도 사용 가능합니다. 반면에 Java는 오랜 침묵 끝에 GCC 7에서 제거되었습니다.
추가할 항목이 있습니다파이썬그리고녹그런데 활동이 별로 없는 것 같아요.
gcc는구성품으로 나누어져 있어요;지원하는 다양한 언어는 프로그램을 중간 표현으로 변환하는 프런트 엔드에 의해 구현되며,지플러(언어 및 기계 독립적). 따라서 최적화 프로그램은 여러 언어에서 공유될 수 있습니다.