기록
[GPT가 알려주는] toolchain 이란? 본문
toolchain(툴체인)은 “코드 → 실행파일”로 만들어 주는 도구 묶음이야.
개발자가 C/Kotlin/Java 같은 언어로 코드를 쓰면, 이걸 보드에서 돌아가는 **바이너리(elf, exe 같은 것)**로 바꿔주는 애들 세트라고 보면 돼.
조금만 풀어서 말하면:
1. 툴체인에 들어있는 것들
보통 한 세트에 이런 애들이 같이 다녀:
- 컴파일러(compiler)
- 예: gcc, clang, arm-linux-gnueabihf-gcc
- .c, .cpp 같은 소스 코드를 **목적 파일(.o)**로 바꿔줘.
- 어셈블러(assembler)
- 예: as
- 어셈블리 코드를 기계어로 바꿔주는 도구.
- 링커(linker)
- 예: ld
- 여러 개의 .o 파일 + 라이브러리들을 하나의 실행 파일로 묶어줘.
- 예: a.out, app, vmlinux, zImage 이런 거.
- 라이브러리들(libs)
- 예: libc.so, libm.so 같은 기본 C 라이브러리
- printf, malloc 같은 함수들이 들어 있지.
- 헤더 파일들(include)
- 예: /usr/include/stdio.h
- 컴파일 시 “이 함수 어떻게 생겼는지” 알려주는 선언들.
- (옵션) 디버거, 툴들
- 예: gdb, objdump, nm, readelf
- 디버깅하고, 심볼, 섹션 이런 거 보는 도구들.
이걸 통째로 묶어서 툴체인 1세트라고 부르는 거야.
2. 네가 쓰는 종류: Native vs Cross Toolchain
주연이가 하는 건 임베디드 / Android / 커널이라서 특히 크로스 툴체인이 중요해.
1) 네이티브 툴체인 (native toolchain)
- “내가 지금 쓰는 PC용” 툴체인.
- 예: 우분투에서 gcc main.c -o main 이렇게 쓰는 거.
- 빌드도 x86_64, 실행도 x86_64.
2) 크로스 툴체인 (cross toolchain)
- PC(x86_64)에서 ARM 보드용 바이너리를 만드는 툴체인.
- 예:
- aarch64-linux-android-gcc
- arm-linux-gnueabihf-gcc
- 빌드: x86_64 (네 개발 PC)
- 실행: ARM 보드 (TCC8070, STM32 등)
Android, Linux kernel 빌드할 때
CROSS_COMPILE=aarch64-linux-android-
이런 거 쓰잖아?
이 접두사(aarch64-linux-android-)가 바로 툴체인의 이름이야.
3. 실제로 어디서 보냐? (주연이 환경 기준 예시)
예를 들어:
- Android 소스 안에:
- prebuilts/clang/host/linux-x86/
- prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
- STM32 / ARM bare-metal:
- arm-none-eabi-gcc
- Yocto / Linux 빌드:
- aarch64-poky-linux-gcc
- 이런 이름의 gcc, ld, as가 한 세트.
이 디렉터리들 + 바이너리들 전체가 합쳐져서 툴체인이야.
4. 한 줄 요약
- 툴체인 = 소스코드(C, C++, 등)를 보드에서 돌아가는 실행 파일로 바꿔주는 도구 모음 세트.
- 컴파일러 + 어셈블러 + 링커 + 라이브러리 + 헤더 + (디버거 등)으로 구성.
- 네가 지금 쓰는 aarch64-뭐시기-gcc, clang 이런 것들이 다 “툴체인 패키지” 안에 들어있는 친구들.
원하면:
- repo 안에서 Telechips MHC SDK에 들어있는 툴체인 경로도 같이 찾아서
“여기서 이거 쓰는 중이야” 하고 짚어줄게.
'잡동사니 > GPT가 알려주는' 카테고리의 다른 글
| [GPT가 알려주는] Spring @Bean (0) | 2025.11.20 |
|---|---|
| [GPT가 알려주는]세션 로그인 VS JWT 로그인 (0) | 2025.11.20 |
| [GPT가 알려주는] 자(字) 란 무엇일까? (0) | 2025.11.17 |
| [GPT가 알려주는] CI/CD하면 버그 있는 커밋 생성 시 어떻게 될까? (0) | 2025.11.13 |
| [GPT가 알려주는] 리눅스 명령어 4종 (grep, find, sed, awk) (0) | 2025.11.13 |