gcc에서 arm 32비트 코드를 교차 컴파일하려면 어떤 대상 플래그를 설정해야 합니까?

gcc에서 arm 32비트 코드를 교차 컴파일하려면 어떤 대상 플래그를 설정해야 합니까?

일부 32비트 arm 장치용 크로스 컴파일 빌드 서버를 구축하려고 합니다. 아키텍처는 다음과 같습니다. (uname -m에서) "armv5tejl" binutils 및 gcc에 대한 대상을 지정해야 합니다. -- target=aarch64-linux (예를 들어) 내 사용 사례의 대상 플래그가 --target=armv5tejl-linux일 것으로 예상해야 합니까? 아니면 어떤 대상 플래그를 사용할지 어떻게 알 수 있나요?

$로 도움을 요청해 보았지만 gcc --target-help| less 유용한 것이 하나도 없었습니다.

답변1

특히 ARM v5TEJ 아키텍처를 의미 armv5tejl합니다 .unameARM926EJ-S CPU.

이 CPU에 대해 컴파일하려면 다음을 사용하십시오.

% /usr/bin/arm-linux-gnueabi-gcc -mcpu=arm926ej-s -o hello hello.c

라이브러리 문제가 있을 수 있습니다. (동적 라이브러리를 사용하지 않고) 바이너리를 정적으로 컴파일해야 할 수도 있습니다. 이것을 사용하십시오 :

% /usr/bin/arm-linux-gnueabi-gcc -static -mcpu=arm926ej-s -o hello hello.c

관련 정보