2012-12-01 3 views
3

기존 Linux C++ 응용 프로그램을 Raspberry Pi로 이식하려고합니다. 응용 프로그램은 여러 타사 라이브러리에 따라 다릅니다.Raspberry Pi 용 타사 라이브러리를 크로스 컴파일하는 지루한 방법

저는 우분투 12.04를 실행 중이며 crosstools-ng를 사용하여 GCC 4.7 크로스 컴파일러를 구축했습니다 (나중에 공식적으로 제공되는 툴체인을 사용하여 문제를 해결할 수 있음을 깨달았습니다!). 내 라즈베리에 대한 실행 파일을 생성합니다. 여태까지는 그런대로 잘됐다.

그런 다음 제 3 자 라이브러리 의존성을 구축하기 시작했습니다 : GLib, SDL 및 기타 여러 가지. 이러한 각각의 종속성에는 자체적으로 의존성이있었습니다. 이러한 모든 라이브러리의 ARM 버전을 수동으로 빌드하는 작업은 엄청나게 지루하고 시간이 오래 걸립니다. 더 쉬운 방법이 있습니까?

+0

는 당신이 구축 시도 라피 자체? 그런 식으로 컴파일을 건너 뛸 필요가 없다. –

+0

@dwelch 나는 * non * -theious라고 말했다. :) 라스베리에 부스트 같은 것을 컴파일하는 것은 꽤 무서울 것입니다, 나는 기대합니다. –

+0

도움을 주려한다면, 그것이 목표라면 여전히 시도해보십시오. 또는 응용 프로그램에 너무 많은 종속성이 없기 때문에 이식성을 향상시킬 수 있습니다. –

답변

2

ScratchBox2을 발견 한 후, 나는 쓸만한 것을 함께 모으기 시작했습니다. ScratchBox2는 크로스 컴파일에 적합한 chroot를 쉽게 생성하고 QEmu을 사용하여 컴퓨터에서 외부 CPU 바이너리를 실행할 수있게 해주는 도구입니다. 필자의 경우, ScratchBox2는 Raspbian의 독립형 샌드 박스에 대한 액세스를 중재합니다. Raspbian은 Raspberry Pi에 최적화 된 ARM 계열의 데비안입니다.

일단 모든 설정을 완료하고 설정을 완료하는 데 지루한 몇 시간이 걸렸습니다. 필요한 ARM 패키지를 얻으려면 간단히 sb2 -eR apt-get install ...을 입력 할 수있었습니다. 그것은 마법의 물건입니다. (경고의 말씀 : Ubuntu 12.10의 공식 ScratchBox2 패키지에는 운이 없었기 때문에 official Git repo의 최신 버전을 사용하여 소스에서 직접 빌드하는 것이 가장 좋습니다.

내 설정을 더 잘 재현 할 수 있도록 쉽게, Github에 내 가상 머신에 대한 방랑자 레시피를 넣었습니다 : https://github.com/nickhutchinson/raspberry-devbox. 가장자리에 거의 거친 부분이 있습니다. 이것은 퍼핏 프로비저닝 도구를 사용한 첫 번째 경험 이었지만, 다른 사람들이 더 강력하게 만들 수 있기를 바랍니다.

나는 매우 도움이 자원을 발견

2

openembedded build framework을 확인하십시오. 그것은 크로스 컴파일의 지루한 작업을 모두 자동화하도록 설계되었습니다.

openembedded 프로젝트는 당신이 일을 설정하고 시작하는 데 poky 또는 angstrom 같은 openembedded 배포판 SDK를 사용할 수있는 raspberry-pi target

에 대한 지원이 추가되었습니다.

포키 (poky)는 rpm, ipk, deb를 낼 수 있습니다. 그들 대부분은 다른 배포판에서 일하게 될 것입니다. 따라서 poky 배포판 자체를 사용할 필요가 없습니다.

Here 유는 bitbake 레시피 또는 애플리케이션의 의존 관계를 정의하는 사용자 정의 OE 층을 만들 수 후 라즈베리 PI

openembedded와 사용에 대한 가이드이다. 관련 문서는 poky 핸드북을보십시오.

openembedded의 유무에 관계없이 또 다른 옵션은 qemu-arm 시스템에 전체 개발 환경을로드하고 프로덕션 이미지에서 바이너리를 사용하는 것입니다. Openemmbedded/poky에는 qemu-arm sdk 이미지에 대한 목표 이미지 레서피가 있습니다.

관련 문제