정적 링크의 악몽: SDK 제공업체의 한탄
2025-07-22
SDK 제공업체로서 동적 링크와 정적 링크 옵션을 모두 제공해야 합니다. 정적 아카이브(.a)는 간단해 보이지만 위험으로 가득 차 있습니다. 링커의 기본 동작은 아카이브를 원자화하고 개체 파일을 선택하므로, 팽창된 바이너리 또는 생성자/소멸자 순서 문제로 인한 런타임 충돌로 이어질 수 있습니다. -Wl,--whole-archive는 도움이 되지만, 필요 여부에 관계없이 모든 라이브러리 파일을 포함하도록 강제합니다. 정적 아카이브 내의 이름 충돌도 큰 문제입니다. 이러한 문제를 해결하기 위해 저자는 새로운 "정적 번들 개체"(.sbo) 파일 형식을 제안합니다. 이를 통해 공유 개체의 심볼 가시성 보장이 제공되고 많은 링크 문제가 방지됩니다. 바이너리 크기 최적화를 약간 희생하더라도 안정적인 링크 에코시스템이 더 가치 있다는 것이 저자의 주장입니다.
개발