Qaupot Blog
Software Engineering, Trip

102. 컴파일러 & IDE

🕐 Sun, 16 Sep 2012 09:00:00 GMT 🕓 Tue, 17 Aug 2021 13:37:00 GMT

다양한 C / C++ 컴파일러

C / C++ 언어는 고급 언어이지만, 컴파일의 결과물로 네이티브한 기계어를 생성하므로, 하드웨어나 CPU 명령어에 매우 밀접합니다. JAVA 혹은 C# 같은 언어는 성능보다 이식성을 높게 두고 있기 때문에 중간언어를 생성합니다.

번역결과는 기계어 자체를 의미하며, CPU 명령어에 따른 컴파일러가 별도로 존재할 필요가 있습니다.

  • X86 명령어를 사용하는 CPU 를 지원하기 위해서는 X86 명령어로 컴파일
  • ARM 명령어를 사용하는 CPU 를 지원하기 위해서는 ARM 명령어로 컴파일
  • (Fat Binary 라고 불리는 여러 명령어 버전을 하나의 프로그램에 담는 방식도 있습니다)

C / C++ 언어는 UNIX 운영체제에서 출발합니다.
UNIX 운영체제는 굉장히 잘 만들어진 운영체제 이며, 현재 우리가 사용하고 있는 많은 운영체제들은 그 뿌리를 대부분 UNIX 에서 찾을 수 있습니다.

UNIX 호환 운영체제를 흔히 POSIX, Portable Operating System Interface(이식 가능한 운영체제 인터페이스)라 하는데,
Linux, BSD, Mac-OS, Solaris 등이며 Windows 도 POSIX 를 일부 지원합니다.

따라서, POSIX 계열의 운영체제라면 C 언어를 지원할 가능성이 매우 높습니다.

운영체제의 환경을 흔히 플랫폼이라 부르는데, 각 플랫폼에 따라 기술지원이 다르며 이에 따른 C / C++ 의 확장 기능 또한 존재합니다.
많은 운영체제 제작사에서는 해당하는 플랫폼을 위한 개발도구로써 컴파일러들을 제공합니다.

통합 개발 환경(IDE, integrated development environment)

과거, 코드의 크기가 비교적 적은 프로그램들을 작성할 때에는 단순히 텍스트 에디터로도 큰 불편함 없이 작성할 수 있었습니다.

그러나 하나의 응용 프로그램을 작성하기 위한 코드는 날이 갈 수록 방대해져 가고 있으며, 이에 따라 생산성을 높이기 위해 여러 도구의 도움을 받게 되었습니다.

이러한 도구들의 통합한 것이 바로 IDE, 통합개발 환경입니다.
IDE 는 여러분이 코드 전체를 파악하고 있지 않아도, 찾고자 하는 함수등을 빠르게 찾을 수 있도록 도와주거나, 코드에 색깔을 입혀 가독성을 높여주는 기능 등을 제공합니다.

컴파일러 및 IDE

GCC

GPL(General Public License)에 의거해 배포되는 매우 강력한 GCC 컴파일러 를 선택할 수 있습니다.

GCC 컴파일러는 대부분의 운영체제와 다양한 기계어를 지원합니다. 단, 개발 환경이 Windows 인 경우 Cygwin 등의 프로그램이 추가로 필요할 수 있으며,
기본적으로 콘솔 형태의 컴파일러로써 배포되므로, 통합 개발환경을 원한다면 별도로 준비할 필요가 있습니다.

Visual studio

Windows 환경에서 고를 수 있는 컴파일러 및 개발도구로는 Microsoft Visual Studio 가 있습니다.

Visual Studio 는 상용 프로그램이지만, 개인 사용자는 Community Edition 을 이용할 수 있습니다. C / C++ 를 학습할 때 가장 많이 선택되는 IDE 이기도 합니다.

Xcode

MacOS 를 사용하고 계신다면, App Store 에서 Xcode 를 다운로드 받아 바로 개발을 시작하실 수 있습니다. Apple 제품을 위한 프로그램을 개발 할 경우, 필수적으로 사용되는 IDE 입니다.

LLVM

LLVM 은 중간 코드를 사용하는 Compiler 이며, 중간 코드는 기계어를 포함한 또 다른 언어로 번역될 수 있습니다.

  • Xcode 를 사용하여 C 언어를 컴파일 하는 경우 LLVM (clang) 을 사용합니다.
  • Emscripten LLVM 은 C / C++ 언어로부터 Web Assembly 결과를 만듭니다.
이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.