툴체인(Tool Chain)이란
글 작성자: _rian

Tool Chain
툴체인(Tool Chain)이란 소프트웨어 개발에 사용되는 프로그래밍 도구의 집합이다. 대게 크로스 컴파일 환경을 듯한다.
간단한 툴체인은 소스 코드 편집을 위한 문서편집기와 소스 코드를 실행 프로그램으로 변환하는 컴파일러와 링커, 그리고 운영체제의 기능을 제공하는 라이브러리로 구성된다. 비디오 게임과 같은 복잡한 제품에서는 소리 효과와 음악, 텍스처, 3차원 모델, 애니메이션 등을 위한 개발 도구가 필요하며, 이를 한데 모아 완성된 제품으로 만드는 개발 도구도 있어야 한다.
GNU Tool Chain
GNU 툴체인은 GNU 프로젝트가 만든 프로그래밍 도구의 집합을 가리키는 용어다. 이러한 도구들은 응용 소프트웨어와 운영체제를 개발하는데에 쓰이는 툴체인을 형성한다. GNU 툴체인에는 아래와 같은 것들이 있다.
- GNU GCC ( compiler collection ) : C와 C++ 컴파일러의 집합
- GNU binary utilities : binutils - 어셈블러, loader, 기타 tools
- GNU C libaray : glibc - 컴파일러 구축을 위한 라이브러리 및 일반 라이브러리
GNU Tool Chain 명령어 몇가지
- ld
- GNU linker
- 오브젝트 파일들을 라이브러리 파일들과 결합해 실행파일로 만듦. - objdump
- 하나 혹은 여러개의 오브젝트 파일들의 정보를 알려줌 - objcopy
- 오브젝트 파일을 변환해서 복사함
'Computer Engineering > 임베디드 시스템' 카테고리의 다른 글
임베디드 리눅스 커널 프로그래밍(3) - 시스템 호출 함수 구현 (0) | 2019.06.12 |
---|---|
임베디드 리눅스 커널 프로그래밍(2) - 커널 데이터타입, 커널 인터페이스 함수 (0) | 2019.06.11 |
임베디드 리눅스 커널 프로그래밍(1) - application 프로그래밍과 커널프로그래밍의 차이점, 커널프로그래밍 시 주의사항 (2) | 2019.06.11 |
ABI와 EABI (0) | 2019.06.11 |
임베디드 시스템 - 교차 개발 환경(JTAG에 관하여) (0) | 2019.06.11 |
댓글
이 글 공유하기
다른 글
-
임베디드 리눅스 커널 프로그래밍(2) - 커널 데이터타입, 커널 인터페이스 함수
임베디드 리눅스 커널 프로그래밍(2) - 커널 데이터타입, 커널 인터페이스 함수
2019.06.11커널 Data Type 커널에서는 C언어의 원래 자료형 대신에 typedef로 정의된 자료형이 많이 사용된다. 커널에서 여러 종류의 값을 나타나는 데에 int나 long 등을 사용하는 대신 접미사 _t로 끝나는 자료형을 많이 사용한다. pid_t, uid_t, gid_t, dev_t, size_t, …. 에 정의되어 있음 데이터의 크기를 명시적으로 표현한 자료형도 사용한다. u8, u16, u32, s8, s16, s32 (커널 코드에서만 사용 가능) u -> unsigned / s -> signed 사용자 프로그램에서는 __u8, __s8과 같이 _를 두 개 붙여서 사용함 에 정의되어 있음 Kernel Interface 함수 커널 프로그램은 일반적인 라이브러리를 사용하지 못하고 커널에서 export한… -
임베디드 리눅스 커널 프로그래밍(1) - application 프로그래밍과 커널프로그래밍의 차이점, 커널프로그래밍 시 주의사항
임베디드 리눅스 커널 프로그래밍(1) - application 프로그래밍과 커널프로그래밍의 차이점, 커널프로그래밍 시 주의사항
2019.06.11Kernel Programming 이란? 커널 모드에서 수행하는 프로그램을 작성하는 것을 말한다. 커널 프로그래밍의 종류는 아래와 같다. Linux Kernel core 기능 추가 Linux Kernel 알고리즘 개선 Linux Kernel 모듈 프로그래밍 - 커널 컴파일 필요 없음 (나는 주로 세번째인 모듈 프로그래밍을 했다. 나머지는 차차 포스팅 할 예정) Kernel Programming vs Application Programming 수행 방법에서의 차이 Application program : 처음부터 순차적으로 수행함 Kernel : 응용 프로그램이 호출한 system call이나 interrupt handler를 수행하기 위해 비동기적으로 수행함 라이브러리 Application program … -
ABI와 EABI
ABI와 EABI
2019.06.11ABI (Application Binary Interface)란 응용 프로그램과 운영체제 또는 라이브러리와의 표준화된 인터페이스를 제공하는 것을 말한다. ABI는 서로 다른 컴파일러가 만든 오브젝트 파일을 연결하여 사용할 수 있게 한다. Application 간 binary 데이터를 어떻게 교환하는지 다음과 같은 규칙들을 정한다. 데이터 타입과 정렬방법 함수 호출 시 인수 및 결과에 대한 레지스터 교환 방법 시스템 콜 호출 방법 프로그램 코드의 시작과 데이터에 대한 초기화 방법 파일 교환 방법 (ELF 등) API랑 뭐가 다른거지? ABI는 API보다 저수준(binary)란 점. 그리고 API는 소스코드에서 사용되고 ABI는 바이너리에서 호환이 된다는 점에서 다르다. 아키텍쳐와 운영체제마다 조금씩 차이가… -
임베디드 시스템 - 교차 개발 환경(JTAG에 관하여)
임베디드 시스템 - 교차 개발 환경(JTAG에 관하여)
2019.06.11왜 교차개발 환경을 사용할까? 여기서 target 시스템을 우리가 만든 프로그램을 올리고싶은 보드라고 생각해보자. (FPGA 같은 거?) 커널을 올리기 전에는 target 시스템엔 아무 프로그램도 올라가있지 않는다. target 시스템은, 생각해보라. 일반적으로 메모리 용량이 매우 적어서 컴파일러를 포함한 프로그램 개발 환경을 올리기가 어렵다. 그래서 임베디드 시스템 개발을 할 때에는 교차 개발 환경을 사용한다 (!) 교차 개발 환경은 말 그대로 target 시스템 용 프로그램을 별도의 host 시스템에서 개발하는 환경이란 뜻이다. host와 target에 사용되는 프로세서가 다른 경우, 컴파일러의 실행은 host에서 되지만 실행 코드는 target system에서 실행된다. 교차 개발 환경에서 작업을 …
댓글을 사용할 수 없습니다.