내가 쓴 큰 응용 프로그램이 있습니다. 다음 시나리오에서 응용 프로그램을 성공적으로 컴파일 할 수 있습니다.
- Ubuntu 12.04를 실행하는 i386 호스트의 네이티브 컴파일
- Ubuntu 12.04를 실행하는 PandaBoard에서 기본적으로 (시간이 오래 걸림)
- armhf PandaBoard 대상에 대해 호스트 PC에서 Qemu 및 chroot 사용 (시간이 오래 걸림)
i386 호스트에서 응용 프로그램을 크로스 컴파일하여 PandaBoard와 같은 대상에서 실행하여 적시에 빌드를 완료하고 싶습니다. 지금까지 저장소에서 arm-linux-gnueabihf 도구 체인을 사용하여 시도한 결과 올바르게 실행되지 않는 바이너리가 생성되었습니다. 이 단계에서는 소프트웨어를 패키지 할 계획이 없습니다.
성공적인 크로스 컴파일을 달성하기 위해 권장되는 방법은 무엇입니까?
크로스 컴파일러 툴체인을 사용한 크로스 컴파일이 작동해야합니다. 그것이 바로 그 목적입니다. 바이너리는 어떤 방식으로 올바르게 실행되지 않습니까?
—
Gilles 'SO- 악마 그만해'
내 바이너리는 거의 즉시 종료됩니다. strace는 libc.so.6이 예상되는 위치가 아님을 나타냅니다.
—
조나단 동굴
그것은 링크 옵션으로 고칠 수 있어야합니다 (어느 쪽을 알지 못합니다). 대상 시스템이 Ubuntu를 실행하고 있습니까?
—
Gilles 'SO- 악마 그만해'
예, 대상은 Ubuntu 12.04도 실행 중입니다. 컴파일러와 링커에 --sysroot 옵션을 사용해야한다고 생각했지만 우분투 툴 체인에서는 사용할 수 없습니다.
—
Jonathan 동굴
툴체인은 12.04에 저에게 효과적입니다. 방금 amd64에서 테스트했으며 armhf 서버에서 생성 된 바이너리를 성공적으로 실행했습니다. 그러나 나는 i386 빌드 머신을 가지고 있지 않다. 여전히 문제가 발생하면 정교화해야합니다. ldd는 무엇을 말합니까? strace에서 무엇을보고 결론에 도달 했습니까? 명확하게 작동해야하는 간단한 테스트 사례로 문제점을 줄일 수 있는지 확인하고 수행중인 단계를 자세히 설명하십시오.
—
Robie Basak