파다 평범일상
크로스 컴파일 (Cross-Compile) 본문
반응형
컴파일 (Compile)에 필요한 것
- AR = ar (Archive maintaining program)
- AS = as (Assembler)
- CC = cc (= gcc , C compiler)
- CXX = g++ (C++ compiler)
- LD = ld (Linker)
- NM = list symbols from object files 😅?
- RANLIB = generate index to archive (= ar -s) 😅?
크로스 컴파일 (Cross-Compile) 이란?
크로스 컴파일은 하나의 시스템에서 만들어져 사용되는 프로그램이나 소스 등을 다른 시스템에서 사용할 수 있도록 빌드하는 절차이다.
호스트 시스템에서 타겟 시스템에서 실행될 결과물을 만드는 과정이라고 생각하면 될 것 같다.
- 호스트 (Host) 시스템 : 컴파일을 수행하는 시스템으로, 일반적으로 x64 또는 x86_64 CPU이다.
- 타겟 (Target) 시스템 : 컴파일된 결과물을 실행하려는 시스템으로, 일반적으로 ARM AArch64이다.
- 툴체인 (Toolchain) : 타겟 시스템에서 동작하는 프로그램 개발에 필요한 소프트웨어들 또는 개발 환경이다. 실행 파일을 생성하는데 필요한 각종 유틸리티 및 라이브러리의 모음
LuaJIT을 크로스 컴파일하기
나의 개발환경은 호스트 시스템이 x86_64이며, 타겟 시스템이 AArch64이다.
- 호스트와 대상 아키텍처 모두 포인터 크기가 동일해야한다.
- 64비트 대상은 항상 64비트 호스트에서 컴파일해야 한다.
- 호스트 OS와 타겟 OS가 다를 때마다 TARGET_SYS를 지정해야 합니다.
- 사전 빌드된 일반 툴체인의 경우 -mcpu=... 또는 -march=... 및 기타 필요한 플래그를 TARGET_CFLAGS 에 추가하세요.
- ARM의 경우 올바른 -mfloat-abi=... 설정을 갖는 것도 중요합니다 . 그렇지 않으면 LuaJIT가 대상 CPU의 최대 성능으로 실행되지 않을 수 있습니다.
# ARM 소프트 플로트
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabi- \
TARGET_CFLAGS="-mfloat-abi=soft"
# ARM64
make CROSS=aarch64-linux-gnu-
'컴퓨터 IT > 얕은 컴퓨터 지식과 프로그래밍' 카테고리의 다른 글
LuaJIT.cmake를 빌드하다가 생긴일 "Error: unknown mnemonic" (0) | 2024.05.03 |
---|---|
CMake에서 "add_custom_command()" 명령어 (0) | 2024.05.02 |
libbpf 정의 및 라이프사이클 - libbpf (1) (0) | 2024.04.26 |
서버/클라이언트 프로그래밍을 위한 로드맵 (0) | 2023.09.22 |
CMake와 CPack으로 프로젝트 제품 패키지하기 (0) | 2023.07.26 |
Comments