그라운드 임베디드 EN 유튜브 구독

노트 / 임베디드 리눅스

크로스 컴파일: PC에서 ARM 보드용 빌드

성능이 좋은 PC에서 다른 아키텍처용 실행 파일을 만드는 툴체인. sysroot와 라이브러리 버전이 맞아야 보드에서 돕니다.

GROUND EMBEDDED · 정리 노트임베디드 리눅스 02크로스 컴파일 1aarch64-linux-gnu-gcc -o hello hello.c 2file hello # ELF 64-bit LSB execut… 3scp hello root@board:/tmp/

왜 크로스 컴파일인가

PC (x86)소스 코드크로스 컴파일러arm-linux-gnueabihf-gccARM 실행 파일보드에서 실행
빌드는 빠른 PC에서, 실행은 보드에서 합니다.

임베디드 보드에서 직접 빌드하면 느리고 저장 공간도 부족합니다. x86 PC에서 ARM용 실행 파일을 만들어 보드로 옮깁니다.

툴체인 이름

aarch64-linux-gnu-gcc = 대상 아키텍처(aarch64) - 운영체제(linux) - ABI(gnu) - 도구(gcc)

대상 툴체인 예
64비트 ARM 리눅스 aarch64-linux-gnu-
32비트 ARM 리눅스 (하드 float) arm-linux-gnueabihf-
MCU (운영체제 없음) arm-none-eabi-
aarch64-linux-gnu-gcc -o hello hello.c
file hello      # ELF 64-bit LSB executable, ARM aarch64
scp hello root@board:/tmp/
무료 전자책이 주제를 한 권으로 이어 읽기 (PDF 3권)→

sysroot

보드의 헤더 파일과 라이브러리 묶음입니다. 보드에 설치된 glibc 버전보다 새 버전으로 빌드하면 "GLIBC_2.34 not found" 같은 오류가 납니다. 보드 이미지를 만든 Yocto/Buildroot가 만들어 준 SDK의 툴체인과 sysroot를 쓰면 맞습니다.

빌드 시스템

CMake에서는 툴체인 파일로 컴파일러와 sysroot를 지정합니다. 보드 GDB 서버(gdbserver)와 PC의 gdb-multiarch를 연결하면 원격 디버깅도 됩니다.

영상으로 이어 보기제품은 어떻게 동작할까 시리즈 8편하늘 위 떠다니는 드론은 어떻게 동작할까? 프로펠러 4개로 뜨고 기우는 원리부터 비행 제어기 · PID · 센서 퓨전까지FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →