2019. 4. 18. 23:10ㆍ임베디드/임베디드리눅스
툴체인은 임베디드 리눅스의 첫 번째 요소로, 타겟보드에서 실행될 소스로 컴파일 가능케하는 도구다
툴체인의 조건으로는
1. 툴체인은 해당 프로세서를 위한 최적의 명령어 세트를 사용함으로써 하드웨어를 효과적으로 사용할 수 있어야 한다
2. 프로젝트에 필요한 언어를 지원해야 하고, POSIX(Portable Operating System Interface 및 기타 시스템 인터페이스) 에 대한 믿음직한 구현을 갖고 있어야 한다
3. 툴체인을 공급하는 회사에서 버그 혹은 결함에 대한 업데이트를 꾸준히 진행하는지 확인해야 한다
4. 툴체인은 프로젝트 내내 바뀌지 않아야 한다. 즉, 한 번 툴체인을 정하면 끝까지 고수해야 한다. 프로젝트 도중 일관성 없이 컴파일러와 개발 라이브러리를 바꾸면 감지하기 힘든 버그를 낳는다.
툴체인은 컴파일러, 링커, 런타임 라이브러리를 포함하는 컴파일 도구의 집합이다
처음 리눅스 시스템의 나머지 세 요소(부트로더, 커널, 루트 파일시스템)를 빌드하기 위해 꼭 필요하다. 기본 오픈소스 패키지들이 어셈블리, C, C++을 사용하기 때문에 툴체인은 이 언어로 작성된 코드를 컴파일할 수 있어야 한다a
$ sudo apt-get install automake bison chrpath flex g++ git gpref \
gawk libexpat1-dev libncurses5-dev libsdl1.2-dev libtool \
python2.7-dev texinfo
$ git clone https://github.com/crosstool-ng/crosstool-ng.git
$ cd crosstool-ng
$ ./bootstrap
$ ./configure --enable-local
$ make
$ make install
$ ./ct-ng show-arm-cortex_a8-linux-gnueabi
$ ./ct-ng arm-cortex_a8-linux-gnueabi
$ ./ct-ng menuconfig
Path and misc -> turn off Render the toolchain read-only
Target options -> Floating point -> hardware(FPU)
$ ./ct-ng build
발생한 에러에 대해 참조해보자
if configure: error: could not find GNU libtool >= 1.5.26
sudo apt-get install libtool libtool-bin
https://github.com/esp8266/esp8266-wiki/issues/15
if error: missing required tool: help2man
sudo apt-get install help2man
crosstool-ng 1.22.0 버전은 가급적 지양한다
버그가 많은 버전이고 굳이 git 브런치를 할 이유가 없다
툴체인 빌드에 성공한 후 툴체인으로 간단한 컴파일을 진행했다
file 명령어를 통해 실행파일의 정보를 간략히 출력할 수 있다
COPYRIGHT 임베디드 리눅스 프로그래밍 완전정복 / 크리스 시먼즈
'임베디드 > 임베디드리눅스' 카테고리의 다른 글
컴파일 과정 (0) | 2019.04.21 |
---|---|
툴체인 조합 (0) | 2019.04.19 |
[BBB로 임베디드 시스템 구축] 준비 (0) | 2019.04.18 |
부트로더를 플래시에 올리기 위한 fusing 시스템 (0) | 2019.04.14 |
tool-chain (0) | 2019.04.14 |