요즘 아르바이트를 하면서 ARM 크로스툴체인이 필요해서
여러 방법을 시도해 봤는데, 역시 크로스 툴체인 세상은
빌드 자체부터 쉽지가 않은게 빡센 뭔가가 느껴지더군요.
파이썬도 아직까지 표준 배포로는 크로스 빌드가 제대로 안
되는 것을 보면~ 흐흐.
그래서 아예 바이너리 패키지는 없는가 한참을 찾아보다가
Scratchbox라는
것을 찾았습니다. 처음에 scratchbox는 단순히 deb가 있어서
우분투에 깔기 좋겠다 하는 생각으로 깔았는데, 생각보다
좀 더 뭔가 멋지구리한 것이었네요.
scratchbox는 툴체인만 묶어놓은 것이 아니라, 바로 누르자마자
개발과 테스트를 할 수 있는 개발환경이었습니다. 처음에
깔고 나서 scratchbox 로그인 프로그램을 실행하면,
환경 설정 화면이 예쁘게 뜨는데, 그 화면에서 툴체인 종류,
에뮬레이터 종류 같은 것들을 설정해 주면 그 다음부터는
로그인할 때 자동으로 크로스 개발환경으로 셸이 떡 하고 뜹니다.
그 다음이 아주 감동인데, 리눅스의 binfmt를 이용해서
qemu-arm과 직접 연결하는 바람에, 완벽하게 타겟 환경과 호스트
환경을 섞어놓은 듯한! 그러니까.. vim, wget, grep 같이
개발 중에 많이 쓰이는 툴들은 모두 호스트 바이너리로 되어있고
uname, python, perl 같이 빌드/테스트에 직접적으로 영향을 미치는 프로그램들은 모두 타겟 바이너리로 돼서 qemu-arm으로 에뮬레이트가 자동으로 됩니다. 그래서, 파이썬처럼 빌드 도중에 빌드된 바이너리를 쓰는 까다로운 빌드 환경도 깔끔하게 크로스빌드가 가능!
(아래의 호스트는 ubuntu-i386 임)
|
[sbox: ~/seed/orig] > <b>cc -v 2>&1|tail -1</b> gcc version 3.4.2 (release) (CodeSourcery ARM Q3D 2004) [sbox: ~/seed/orig] > <b>uname -a</b> Linux ubuntu 2.6.12-10-386 #1 Fri Nov 18 11:51:02 UTC 2005 arm GNU/Linux [sbox: ~/seed/orig] > <b>cc -o tseed seed.orig.c seed_*.c test.c</b> [sbox: ~/seed/orig] > <b>file tseed</b> tseed: 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] > <b>./tseed</b> SEED-CBC encoding: 11.765 Mbytes/second [sbox: ~/seed/orig] > |
노키아에서 리눅스 기반 플랫폼 개발을 위한 프로젝트에서 쓴 것 같은데, FreeBSD 포트에도 하나 이런 걸로 만들어 봄 직하군요. 🙂