운영체제 없는 베어메탈에선 안 쓴다.
대체로 안쓰고 리눅스 깔리는 임베디드 나오면서 쓰긴 한다.

챗지피티
좋은 질문입니다. **임베디드 시스템에서 동적 링크(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?