기록
[GPT가 알려주는] 컴파일, 링크, 실행파일, 바이너리, 이미지 본문
컴파일 하면 object파일 나오고
링크하면 object파일 엮어서 실행파일 나오는 거 맞아?
내가 아는 실행파일은 exe뿐인데 바이너리파일이 의미하는게 뭐야? 이미지
응, 기본 흐름 이해한 거 맞아 👍
- 컴파일 → 오브젝트 파일(.o / .obj)
- C 소스: main.c
- 컴파일러(gcc, clang 등)가 이걸 기계어로 번역 → 오브젝트 파일 생성
- 이때는 아직 “완성된 프로그램”이 아님
- 외부 함수(printf, 다른 소스파일의 함수 등`) 들 주소가 확정 안 된 상태
- 그래서 “반쯤 만든 부품” 같은 느낌
- 링크 → 실행 파일(Executable)
- 여러 개의 오브젝트 파일: main.o, util.o, device.o
-
- 라이브러리: libc, libm…
- 링커가 이걸 엮어서
- 외부 함수/변수 참조를 전부 진짜 주소로 채워 넣고
- 실행 시작 지점(main이 아니라 OS 입장에서의 entry point)도 설정해서
- 최종적으로 실행 가능한 파일을 만든 게 우리가 아는 exe / a.out / 아무 확장자 없는 실행파일이야.
- “컴파일 하면 object파일 나오고
링크하면 object파일 엮어서 실행파일 나오는 거 맞아?”
👉 맞아. (중간에 라이브러리도 같이 엮는다고만 추가로 기억해두면 좋아.)
그럼 “실행파일 = exe” 인가?
- Windows: 보통 실행파일 = .exe, .dll
- Linux/Android: 확장자 없이 그냥 app, busybox 이런 이름으로 실행 가능
- 형식은 ELF (Executable and Linkable Format) 이라는 바이너리 포맷
- 임베디드:
- firmware.bin, u-boot.bin, ap1_bl3.rom, Image 이런 것들
- 이것들도 전부 “실행 가능한 바이너리(또는 로더가 읽어서 실행할 코드)”야.
그러니까 “실행 파일”은 꼭 .exe일 필요 없고,
OS/환경에 맞는 실행 가능한 형식의 바이너리 파일이면 전부 실행 파일이라고 보면 돼.
“바이너리 파일”이란 말의 의미
텍스트 파일이 아닌 모든 파일이라고 생각하면 편해:
- 기계어 코드가 들어 있는 실행 파일 / 오브젝트 파일 / 라이브러리
- 이미지 파일(.png, .jpg)
- 엑셀 .xlsx, 한글 .hwp, 동영상 .mp4 …
이런 건 다 사람이 열어보면 글자가 아니라 깨진 문자열로 보이지?
→ 이런 걸 전부 **“바이너리 파일”**이라고 부르는 거야.
근데 프로그래머들끼리 말할 때
- “이거 바이너리 떠서 보냈다”
- “커널 바이너리”
이렇게 말하면 **대부분 “기계어 코드 들어 있는 실행용 파일 / 이미지”**를 의미하는 경우가 많아.
(문맥상 “코드 결과물”을 말하는 거지, JPG 같은 걸 말하는 건 아님)
그럼 “이미지(image)”는 또 뭐야?
펌웨어 쪽에서 많이 나온 그 이미지는:
- **“메모리/저장장치에 그대로 올려서 쓰는 덩어리”**라는 의미로 쓰여
- 부트로더 이미지: u-boot.bin
- 커널 이미지: Image, zImage
- 디스크 이미지: SD_Data.fai, *.img
이것들도 결국은 바이너리 파일의 한 종류고,
“특정 레이아웃대로 꾸려진 데이터 덩어리”라서 image라고 부르는 거야.
정리하면:
- 바이너리(binary):
- 텍스트가 아닌 모든 파일 (그 중 코드 결과물을 말하는 경우가 많음)
- 오브젝트 파일(.o):
- 컴파일 결과물, 아직 완성 전 부품
- 실행 파일(executable):
- 여러 오브젝트(+라이브러리)를 링크해서 나온, OS가 바로 실행할 수 있는 바이너리
- 이미지(image):
- 플래시에 굽거나 메모리에 그대로 올릴 수 있게 “포맷 맞춰서 묶어둔” 바이너리 덩어리
혹시 ap1_bl3.rom, Image, hypervisor.bin 같은 걸
“대체 얘네는 exe도 아닌데 뭐지…?” 라고 느꼈다면
→ 전부 “해당 환경에서 실행되거나 로드되는 실행용 바이너리/이미지”라고 보면 돼 🧠
헷갈리는 다른 확장자들 있으면 이름 몇 개 던져줘, 하나씩 “정체” 까보자 😆
'잡동사니 > GPT가 알려주는' 카테고리의 다른 글
| [GPT가 알려주는] CI/CD하면 버그 있는 커밋 생성 시 어떻게 될까? (0) | 2025.11.13 |
|---|---|
| [GPT가 알려주는] 리눅스 명령어 4종 (grep, find, sed, awk) (0) | 2025.11.13 |
| [GPT가 알려주는] 인터페이스란? (0) | 2025.11.12 |
| [GPT가 알려주는] fastboot란? (0) | 2025.11.12 |
| [GPT가 알려주는] 호텔 checkout과 git checkout 연관지어 이해하기 (0) | 2025.11.10 |