운영체제 없는 베어메탈에선 안 쓴다.
대체로 안쓰고 리눅스 깔리는 임베디드 나오면서 쓰긴 한다.
챗지피티
좋은 질문입니다. **임베디드 시스템에서 동적 링크(Dynamic Link-ing)를 쓰는가?**에 대한 대답은 **"경우에 따라 다르지만, 제한적으로 사용된다"**입니다. 자세히 설명드릴게요:
✅ 동적 링크란?
프로그램 실행 중 필요한 공유 라이브러리를 실행 시간(runtime)에 메모리에 로드하는 방식.
보통 .so (Linux), .dll (Windows) 파일 형태.
✅ 임베디드 시스템에서의 사용 여부
1. 소형/초저가 MCU 시스템 (Bare-metal, RTOS 기반)
예: Arduino, STM32, ESP32 등
❌ 거의 사용하지 않음
이유:
메모리(RAM, Flash) 부족
OS나 파일 시스템이 없는 경우도 많음
코드 크기를 줄이기 위해 정적 링크(static link-ing) 선호
모든 코드가 컴파일 타임에 통합되어 "단일 바이너리"로 실행
2. 임베디드 리눅스 기반 시스템
예: 라즈베리파이, OpenWRT 라우터, 스마트TV, 산업용 보드 등
✅ 부분적으로 사용
glibc, libm, libpthread, libc.so.6 등의 표준 라이브러리를 동적 링크로 사용함
동적 링크 장점:
메모리 절약 (라이브러리 공유)
업데이트 유연성 (라이브러리만 교체 가능)
ld.so나 ld-linux.so 등의 런타임 링커/로더가 필요
3. 안드로이드 / 복잡한 IoT 시스템
✅ 동적 링크 일반적
예: .so로 된 JNI 라이브러리, OpenSSL, TensorFlow Lite 등
✅ 비교 요약
시스템 종류동적 링크 사용 여부이유Arduino, STM32 등 MCU❌ 거의 안 씀성능/메모리 제약, OS 없음임베디드 리눅스✅ 제한적으로 사용glibc 등 공유 목적안드로이드 기반✅ 일반적으로 사용시스템 복잡도 ↑
✅ 참고: 정적 vs 동적 링크
항목정적 링크동적 링크파일 크기큼작음 (라이브러리 분리됨)메모리 사용중복 가능공유 가능업데이트바이너리 재컴파일 필요라이브러리만 교체 가능속도빠름약간 느릴 수 있음
궁금한 시스템이 있다면 (예: STM32, 라즈베리파이, 안드로이드 박스 등) 알려주시면, 그 시스템에서 동적 링크가 어떻게 쓰이는지 구체적으로 설명드릴게요.
"도둑은 집을 떠나며 주인을 욕한다" - 러시아 속담
40년전 미국 빌보드 5주 연속 1위한 한국 노래
https://youtube.com/shorts/MhPKOQiOOQI?
40년전 미국 빌보드 5주 연속 1위한 한국 노래
https://youtube.com/shorts/MhPKOQiOOQI?
임베디드 리눅스에선 동적 링킹하죠
@발명도둑잡기(118.216) 맞죠. 그래서 제가 루비한테 지적한게 그거였어요
"코드 크기를 줄이기 위해 정적 링크(static link-ing) 선호" << 코드 크기를 줄이려고 나온게 동적링킹인데 ㅋㅋ 반대로 설명하내ㅔ