## 0.1 런타임 의존 타입 지원을 위한 동적 오브젝트 라이브러리 컴파일 체계
ROS2의 멀티-랭귀지 바인딩 아키텍처는 정적 타입 검사(Static Type Checking)가 수행되는 C/C++ 컴파일 타임 생태계뿐만 아니라, 파이썬(Python)과 같은 동적 타이핑 런타임 환경에서도 완벽한 메모리 투명성과 상호운용성을 보장해야 한다. 이를 위해 ROS IDL(Interface Definition Language) 파이프라인을 통해 정의된 커스텀 데이터 타입은 추상화된 중간 표현(Intermediate Representation) 단계를 거쳐, 각 언어 바인딩 시스템이 프로세스 생성 후 런타임(Runtime) 시점에 로드(Load)하고 해석할 수 있는 동적 오브젝트 라이브러리(Dynamic Object Library, Linux 환경 기준 .so) 규격으로 병렬 컴파일된다. 이러한 동적 런타임 의존성 주입을 지원하는 핵심 빌드 체계는 rosidl 프레임워크 내부의 언어별 제너레이터(예: rosidl_generator_c, rosidl_generator_cpp, rosidl_generator_py)와 이를 이진 객체로 통합하여 래핑하는 동적 링킹 스크립트 메커니즘을 기반으로 구축된다.
ament_cmake 중심의 빌드 시스템은 타겟 패키지 내 rosidl_generate_interfaces 매크로 지시어를 파싱할 때, 단순히 소스 레벨의 식별자 헤더 파일만을 산출하는 것에 국한되지 않는다. 백그라운드 파이프라인에서는 ROS2 미들웨어 계층의 타입 서포트(Type Support) 제너레이터를 연쇄적으로 기동하여, 바이트스트림 직렬화 및 역직렬화(Serialization/Deserialization) 로직을 포함하는 심볼을 보유한 공유 라이브러리 객체를 선언적으로 생성한다. 특히 rosidl_typesupport_c 및 rosidl_typesupport_cpp 패키지가 개입하여 하부 미들웨어(DDS 등)와 RCL(ROS Client Library) 계층을 매개하는 데이터 구조 변환 래퍼(Wrapper) 로직을 C 애플리케이션 바이너리 인터페이스(ABI) 호환 컴파일로 빌드 출력(build/ 및 install/) 궤적에 투영한다.
동적 라이브러리 기반 런타임 의존성의 복잡도는 RCLPY(Python 바인딩) 생태계에서 가장 확연하게 드러난다. 파이썬 노드의 라이프사이클 중 import 구문이 인터프리터에 의해 실행되는 런타임 시점에는, 사전에 Colcon 빌드 단계에서 C 언어로 래핑되어 컴파일된 파이썬 C-Extension(C-확장 모듈) 동적 공유 라이브러리가 프로세스 메모리 공간에 동적으로 적재(dlopen 등 이용)되어야 한다. 빌드 툴체인은 rosidl_generator_py를 통해 파이썬 스페이스의 객체를 C 스페이스의 직렬화 루틴으로 매핑하는 브리지 라이브러리 코드를 자동 생성하며, 이는 최종적으로 lib<패키지명>__rosidl_generator_py.so 와 같은 오브젝트 파일 스키마로 컴파일 및 링킹을 거쳐 워크스페이스에 배포된다.
Colcon과 ament 시스템의 이러한 공유 라이브러리(Shared Library) 생성 방식은 ROS 1 시대의 genpy 기반 순수 파이썬 런타임 파싱 체계와 궤를 달리하며, 하드웨어 플랫폼 아키텍처(x86, ARM 등)에 종속적으로 최적화된 컴파일된 머신코드를 활용하여 통신 버퍼 처리 오버헤드를 극단적으로 감소시키는 고성능 패러다임이다. 따라서, 모든 커스텀 통신 인터페이스 생성 패키지의 package.xml 메타데이터 내에는 파이썬 클라이언트 등에서 런타임 객체 인스턴스화를 수행하기 위한 <exec_depend>rosidl_default_runtime</exec_depend> 선언이 엄격히 포함되어야 한다. 이 런타임 의존성 지시어가 누락될 경우 실행 공간 구축 단계에서 모듈 패키지 링킹 참조 오류(Symbol Resolution Error)를 유발하여 자율 임무 수행 노드의 치명적인 비정상 종료(ImportError 혹은 Segmentation Fault)를 초래한다. 결론적으로 ROS2의 IDL 컴파일 체계는 정적 링킹 기반의 메모리 무결성 검증과 동적 로딩 라이브러리 기반의 유연한 언어 바인딩을 통합적으로 제공하는 하이브리드 링킹 아키텍처를 구현하고 있다.