ARM에 대한 크로스 컴파일 방법?


41

ARM 프로세서에 대한 크로스 컴파일을 위해 GCC를 어떻게 설정합니까? 호스트는 x86_64 (AMD64-Ubuntu 12.04)에 있고 대상은 ARM입니다 (Pandaboard뿐만 아니라 Raspberry Pi도 각각에 대해 별도의 컴파일을 수행함)?

답변:


44

설치 gcc-arm-linux-gnueabibinutils-arm-linux-gnueabi패키지를 한 다음 컴파일 arm-linux-gnueabi-gcc대신 사용하십시오 gcc.

대상 시스템에 어떤 종류의 Linux 및 binutil이 있는지주의해야합니다. 최신 물건은 하드 플로트입니다.이 경우 다음을 수행하십시오.

sudo apt-get install gcc-arm-linux-gnueabihf

이는 binutils를 포함한 완전한 크로스 컴파일 환경을 제공합니다.


Ubuntu 13.10에서는 'gnueabi'에 대해 gcc-4.7을, 'gnueabihf'에 대해 gcc-4.8을 얻습니다.
nobar

컴파일하려고 할 때 openssl/ossl_typ.h이미 설치했지만 오류가 발생하지 않았습니다 libssl-dev.
Necktwi

1
당신은 소스 코드를 얻을 경우에서 apt-get source후, apt-get build-dep당신은 일반적으로 단지로 컴파일 할 수 있습니다 dpkg-buildpackage -b -uc -us -r메이크 파일을 변경하지 않고이 쉽게 ARM에 대한 뎁을 구축 할 수있는 방법이 있습니까?
Jonathan

@Maratyszcza 라인 실행에 대해 더 구체적으로 설명해 주 and then just use arm-linux-gnueabi-gcc instead of gcc for compilation시겠습니까? 컴파일 할 때 makeAFAIK가 자연스럽게 /usr/lib/gcc또는 그와 비슷한 것을 가리키는 호출을 사용 합니다. arm-linux-gnueabi-gcc를 어떻게 직접 호출 할 수 있습니까?
Momergil

9
@MomergilCC=arm-linux-gnueabihf-gcc make ...
Maratyszcza

1

디스크 이미지 제공자는 호환 가능한 크로스 컴파일러도 제공해야합니다.

이것이 유일하게 신뢰할 수있는 방법입니다.

특히 RPI의 경우 제공된 크로스 컴파일러는 https://github.com/raspberrypi/tools 에서 사용할 수 있으며 https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry-에 설명 된대로 사용할 수 있습니다. pi- 크로스 컴파일러 / 83215 # 83215

git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp

크로스 컴파일러를 잘못 선택하면 다음이 발생할 수 있습니다.

내가 가장 좋아하는 대안은 Buildroot를 사용하여 자신의 이미지를 빌드하는 것입니다 : https : //.com wi / 49349237 # 49349237 소스에서 모든 것을 빌드하고 모든 것이 호환되는지 확인합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.