노무현 대통령 배너


2007. 7. 13. 10:11

크로스컴파일 툴킷 scratchbox

퍼온겁니당...

요즘 아르바이트를 하면서 ARM 크로스툴체인이 필요해서 여러 방법을 시도해 봤는데, 역시 크로스 툴체인 세상은 빌드 자체부터 쉽지가 않은게 빡센 뭔가가 느껴지더군요. 파이썬도 아직까지 표준 배포로는 크로스 빌드가 제대로 안 되는 것을 보면~ 흐흐.

그래서 아예 바이너리 패키지는 없는가 한참을 찾아보다가 Scratchbox라는 것을 찾았습니다. 처음에 scratchbox는 단순히 deb가 있어서 우분투에 깔기 좋겠다 하는 생각으로 깔았는데, 생각보다 좀 더 뭔가 멋지구리한 것이었네요.

scratchbox는 툴체인만 묶어놓은 것이 아니라, 바로 누르자마자 개발과 테스트를 할 수 있는 개발환경이었습니다. 처음에 깔고 나서 scratchbox 로그인 프로그램을 실행하면, 환경 설정 화면이 예쁘게 뜨는데, 그 화면에서 툴체인 종류, 에뮬레이터 종류 같은 것들을 설정해 주면 그 다음부터는 로그인할 때 자동으로 크로스 개발환경으로 셸이 떡 하고 뜹니다. 그 다음이 아주 감동인데, 리눅스의 binfmt를 이용해서 qemu-arm과 직접 연결하는 바람에, 완벽하게 타겟 환경과 호스트 환경을 섞어놓은 듯한! 그러니까.. vim, wget, grep 같이 개발 중에 많이 쓰이는 툴들은 모두 호스트 바이너리로 되어있고 uname, python, perl 같이 빌드/테스트에 직접적으로 영향을 미치는 프로그램들은 모두 타겟 바이너리로 돼서 qemu-arm으로 에뮬레이트가 자동으로 됩니다. 그래서, 파이썬처럼 빌드 도중에 빌드된 바이너리를 쓰는 까다로운 빌드 환경도 깔끔하게 크로스빌드가 가능!

(아래의 호스트는 ubuntu-i386 임)

[sbox: ~/seed/orig] > cc -v 2>&1|tail -1gcc version 3.4.2 (release) (CodeSourcery ARM Q3D 2004)[sbox: ~/seed/orig] > uname -aLinux ubuntu 2.6.12-10-386 #1 Fri Nov 18 11:51:02 UTC 2005 arm GNU/Linux[sbox: ~/seed/orig] > cc -o tseed seed.orig.c seed_*.c test.c[sbox: ~/seed/orig] > file tseedtseed: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped[sbox: ~/seed/orig] > ./tseedSEED-CBC encoding: 11.765 Mbytes/second[sbox: ~/seed/orig] >

노키아에서 리눅스 기반 플랫폼 개발을 위한 프로젝트에서 쓴 것 같은데, FreeBSD 포트에도 하나 이런 걸로 만들어 봄 직하군요. :)