Cpython 2
2장 - 개발 환경 구성하기
- 코드 편집기는 언어에 상관없이 코드 파일을 수정할 수 있는 도구이다.
대부분의 코드 편집기는 문법 강조 기능이 포함된 간단한 텍스트 편집기다
- 통합 개발 환경은 특정 언어와 툴체인을 위한 도구다. (**툴체인의 설명은 아래 주석에 달아놓았다.**)
대부분의 통합 개발 환경은 통합된 테스트, 문법 검사, 버전 관리, 컴파일 기능을 포함한다.
완전한 기능을 갖춘 통합 개발 환경은 더 많은 하드웨어 자원을 사용한다.
램이 제한된 경우(8GB 미만) 코드 편집기를 권장한다.
통합 개발 환경은 시작 시간이 길다.
파일은 빠르게 수정하고 싶다면 코드 편집기가 좋은 선택이다.
나는 VS code (비주얼 스튜디오 코드) 를 선택했다.
VS code 설치는 code.visualstudio.com 에서 다운로드할 수 있다.
VS code 는 기본 상태에서도 코드 편집이 가능하지만 확장을 설치해 유용한 기능을 추가할 수 있다.
상단 메뉴의 View => Extensions 를 클릭하면 확장을 검색하고 설치할 수 있는 탭이 나온다.
권장되는 확장은 다음과 같다.
- C/C++ : 인텔리센스, 디버깅, 코드 강조 등의 C/C++ 지원을 제공한다
- Python : 파이썬 코드 편집, 디버깅, 탐색 등의 파이썬 지원을 제공한다.
- reStructuredText: Cpython 문서에 사용되는 reStructuredText 에 대한 자원을 제공한다.
- Task Explorer : make 작업을 편리하게 실행할 수 있는 Task Explorer 패넝를 Explorer 탭안에 추가한다.
필요한 확장을 설치한 후 편집기를 새로 고침하자.
<VS code의 고급 코드 탐색 및 펼치기 기능>
플러그인을 설치해 고급 코드 탐색을 실행할 수 있다.
예를 들어 C 파일에서 함수 호출을 우클릭하고 ' Go to References'를 선택하면 해당 함수에 대한 다른 참조들이 보인다.
- 'Go to Reference' 를 사용해 해당 함수를 사용하는 적절한 방식을 찾을 수도 있다.
- C 매크로를 클릭하거나 그 위에 마우스를 놓으면 매크로가 컴파일된 형태로 펼쳐진다.
- 함수 정의로 이동하려면 함수 호출 위에 마우스를 놓고 macOS에서는 'Cmd+ 클릭'을, 윈도우에서는 'Ctrl + 클릭' 을 해보자.
<작업과 실행 파일을 설정하기 >
VS 코드는 작업 디렉터리 내부의 .vscode 폴더를 작업 공간 설정에 사용한다.
폴더가 없으면 새로 만들고 다음 파일들을 추가해서 작업 공간을 설정할 수 있다.
- 프로젝트 실행 명령에 대한 tasks.json
- 디버거를 위한 launch.json
- 기타 플로그인을 위한 파일
다음은 Cpython 을 컴파일 해 볼 것이다.
**툴체인이란?**
툴체인(toolchain)은 소프트웨어 개발에 사용되는 프로그래밍 도구들의 집합을 말한다. 주요 특징은 다음과 같다.
# 툴체인의 정의와 구성요소
- 소스 코드를 타겟 장치에서 실행 가능한 파일로 변환하는 도구들의 모음이다.
- 주요 구성요소로는 컴파일러, 링커, 어셈블러, 디버거, 런타임 라이브러리 등이 포함된다.
- GNU 툴체인의 경우 주요 요소로 Binutils, GCC, C 라이브러리가 있다.
# 툴체인의 용도와 특징
- 크로스 컴파일 환경에서 주로 사용됩니다. 호스트 시스템에서 타겟 시스템용 실행 파일을 생성하는 데 활용된다.
- 임베디드 시스템 개발에 필수적입니다. 부트로더, 커널, 루트 파일시스템 등을 빌드하는 데 사용된다.
- 도구들이 연쇄적으로 사용되어 한 도구의 출력이 다른 도구의 입력이 되는 방식으로 동작햔다.
## 툴체인 선택 시 고려사항
- 프로젝트에 필요한 언어 지원 여부
- POSIX 및 시스템 인터페이스 구현 여부
- 보안 업데이트 제공 여부
- 프로젝트 기간 동안 일관성 유지 가능 여부[6]
툴체인은 소프트웨어 개발의 기반이 되는 도구 모음으로, 특히 임베디드 및 크로스 플랫폼 개발에서 중요한 역할을 한다.
Citations:
[1] https://blog.naver.com/sees111/222356232227
[2] https://butter-shower.tistory.com/24
[3] https://kkhipp.tistory.com/176
[4] https://itchbo.tistory.com/entry/Toolchain-%EC%9D%B4%EB%9E%80
[5] https://domybestinlife.tistory.com/225
[6] https://rannnneey.tistory.com/entry/2%EC%9E%A5%ED%88%B4%EC%B2%B4%EC%9D%B8-%ED%88%B4%EC%B2%B4%EC%9D%B8toolchain%EC%9D%B4%EB%9E%80