본문 바로가기
나머지/IT개발.잡다한것.

크로스 컴파일러

by 무늬만학생 2012. 4. 19.
반응형

크로스 컴파일러 설치 및 사용법

http://bytesex.org/cross-compiler.html


크로스컴파일러는 보통 chip 벤더들이 제공해 주는 경우도 있는데 질문의 내용으로 미루어보아 이것 보다는 gnu의 crooss toolchain에 대한 질문이라고 여기고 답변 드리겠습니다.


ftp://ftp.gnu.org/gnu에서 binutils, gcc, glibc 세개 디렉토리에서 적당한 버젼의 tool들을 다운 받으십시요. 간혹 툴들간에 의존성 문제가 있는 경우도 있으므로 도큐먼트를 한번 읽어보시고요. (예, glibc-2.3.1을 build 하려면 gcc-3.2 이상을 쓰셔야 합니다.)


다운 받은 소스들을 빌드합니다.

일반적으로 binutils -> static gcc -> glibc -> gcc 순으로 빌드합니다.

물론 이미 target platform용 컴파일러를 가지고 계신다면 굳이 static gcc는 build하지 않으셔도 됩니다.

빌드하는 법은 여느 툴들과 크게 다르지 않습니다.


configure --target=powerpc-mysys-linux-gnu --prefix=/usr/local/toolchain 블라블라...

make

make install

정도이죠.


경험에 따르면 binutils는 대개의 경우 별문제 없이 빌드되고 target 외에는 특별히 옵션에도 신경쓰지 않아도 되지 싶습니다.

static gcc는 기존에 가지고 있는 target platform용 컴파일러가 없을 경우인데 좀 복잡합니다. 먼저 kernel source 디렉토리의 Make 파일을 좀 손보셔서("arch := " 일 겁니다..) 커널 소스를 target platform용으로 config 합니다. make dep 까지 하셔서 target platform용 header를 생성하신 다음 이 header를 사용하고 --disable-shared 옵션으로 gcc를 configure 한 다음에 BOOT_LDFLAGS=--static 옵션을 줘서 make 합니다. 시스템 구성에 따라서 소소한 차이가 많을 수 있으므로 상세한 option은 build 메시지를 봐가면서 추가/삭제 하십시요.

처음하시는 거라면 기존의 컴파일러를 구해서 하시길 권합니다. 웬만한 플랫폼은 어렵지 않게 구하실 수 있을 겁니다. 기존 compiler로 gcc를 빌드하실때는 alias나 configure의 host, build,target, with-as, with-ld 옵션을 잘 조정하셔서 의도한 컴파일러가 호출되도록 해야 합니다. 이 부분도 각자 기존에 시스템을 어떻게 사용하고 있었는가와도 연관이 있기 때문에 build 메시지 봐가면서 고쳐봐야 합니다.


이렇게 gcc를 만들고 나면 glibc를 빌드합니다. glibc는 cpu에 따라서 적절한 옵션을 주면 어렵지 않게 build하고 install 할 수 있습니다.

glibc를 build한 컴파일러가 static gcc라면 glibc를 사용해서 다시 컴파일러를 빌드하시고 아니면 gcc -v 하면 나오는 spec 파일을 바꿔 주십시요. 이건 glibc-howto를 보면 나옵니다.


아참, gcc build하실때 enable-languges configure option로 gcc에서 사용할 language를 제한 할 수 있습니다. 보통 --enable-languages=c,c++ 정도거나 아예 c++도 없지 싶은데요...:)


예전에 비해 toolchain 빌드가 많이 쉬워졌지만 여전히 경우의 수가 많고 약간 까다로운 일이라서 아마 일회성 답변가지고는 한계가 많을 겁니다. 이어서 질문 올리시면 제가 아는한(별로 없지만...:?) 답변 드리죠.



출처 : http://kldp.org/node/444





참고할만한 책,사이트

IT EXPERT 입베디드 리눅스 - 박재호 (한빛 미디어)

Building Embedded Linux system - Yaghmour (O'Reilly)


http://gcc.gnu.org

http://www.objsw.com/CrossGCC/

http://www.kegel.com/crosstool/

http://www.penguinppc.org/




개인블로그

http://littletrue.egloos.com/3962973



반응형