TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 24 READS

오픈소스 임베디드 컴파일러 SDCC, 공적 기금으로 링크타임 최적화에 도전

8비트 마이크로컨트롤러가 여전히 대량으로 쓰이는 저가형 가전, 산업 제어, IoT 말단 장치 영역에서는 gcc나 LLVM 같은 주류 툴체인이 닿지 않는 아키텍처가 많다. 8051 계열, Zilog Z80 계열, STM8, 그리고 초저가로 유명한 Padauk 같은 칩들이 대표적이다. SDCC(Small Device C Compiler)는 이런 소형 디바이스를 겨냥한 재타기팅 가능한 최적화 C 컴파일러 스위트로, 상용 컴파일러의 자유 소프트웨어 대안 역할을 20년 넘게 이어오고 있다. 최근 두 건의 공적 기금 지원이 확정되면서, 오랫동안 자원봉사에 의존해 온 이 프로젝트가 실무자들이 체감할 만한 기능 개선에 착수했다는 점이 눈길을 끈다.

SDCC가 다루는 영역

SDCC는 ANSI C89부터 C99, C11, 최신 C23까지 표준 C를 지원하며, 지원 대상 칩의 폭이 상당히 넓다. 인텔 MCS-51 기반(8031·8051·8052 등), Maxim(옛 Dallas)의 DS80C390, Freescale HC08·S08 계열, Zilog Z80 제품군(Z80·Z180·eZ80·R800·Rabbit 2000~4000·TLCS-90 등), STM8, Padauk(pdk14·pdk15), 그리고 MOS 6502와 WDC 65C02까지 포괄한다. Rabbit 5000·6000, Padauk pdk13, 그리고 f8·f8l 타깃은 작업이 진행 중이며, Microchip PIC16·PIC18 타깃은 현재 유지보수가 이뤄지지 않는 상태다. 서로 다른 자유 소프트웨어 라이선스를 가진 여러 구성 요소를 묶은 스위트라는 점도 특징으로, 원래 Sandeep Dutta가 GPL로 공개한 뒤 1999년 12월 SourceForge로 옮겨지면서 사용자가 개발자로 합류하는 개방형 개발 구조를 갖추게 됐다.

공식 지원 플랫폼은 amd64와 x86 GNU/Linux, amd64 윈도우, amd64 macOS다. 리눅스와 macOS에서는 gcc로 네이티브 빌드하고, 윈도우 릴리스는 리눅스 호스트에서 mingw32로 크로스 컴파일해 만든다. aarch64·ppc64 리눅스나 FreeBSD 등에서도 동작이 확인돼 있다. 다만 배포판 저장소에 포함된 SDCC 패키지는 종종 오래된 버전이라, 최신 기능이 필요하면 공식 릴리스나 스냅샷을 직접 빌드하거나 SourceForge에서 사전 컴파일된 바이너리를 받는 편이 낫다. 현재 4.5.0이 2025년 1월 28일 정식 배포됐고, 4.6.0은 릴리스 후보(RC2) 단계에 있다.

두 건의 기금이 겨냥하는 것

SDCC 개발은 기본적으로 무보수 자원봉사로 이뤄져 왔고, 간헐적으로 대학 소속 개발자의 업무 시간 일부나 벤더의 하드웨어 샘플 제공 정도의 외부 지원만 있었다. 프로젝트 측은 이런 방식의 한계를 솔직하게 설명한다. 몇 시간의 여유가 생겨 버그나 기능에 손을 대더라도 그 시간 안에 끝내지 못하면, 다음에 다시 붙기까지 시간이 걸리고 그때마다 맥락을 되찾는 추가 비용이 든다는 것이다. 자금이 있으면 유급 업무로 이어서 작업할 수 있어 이런 단절을 줄일 수 있다는 설명이다.

첫 번째는 NGI0 Commons Fund의 지원으로, 다섯 명의 개발자가 공동으로 참여한다. 하드웨어별 개선으로는 저가 마이크로컨트롤러 Padauk, 구형 IoT 기기에 흔한 Rabbit, 그리고 도시바 TLCS 계열 지원 강화가 계획돼 있다. 기계 독립적 개선으로는 최신 ISO C 표준 지원 확충, 지역 변수의 메모리 사용을 줄이는 최적화, 그리고 사용되지 않는 함수와 객체를 제거하는 링크타임 최적화(LTO)가 포함된다. 특히 LTO는 최근 몇 년간 SDCC 사용자들이 가장 많이 요청해 온 기능으로 꼽힌다. 코드 메모리가 킬로바이트 단위로 빠듯한 8비트 환경에서 미사용 코드를 걷어내는 최적화는 곧바로 펌웨어 크기와 단가에 직결되는 만큼, 실무자 입장에서 가장 반길 만한 대목이다.

두 번째는 Sovereign Tech Fund가 발주한 프로젝트로, 한 명의 개발자가 임베디드 펌웨어의 안전성과 보안 향상에 집중한다. 안전·보안과 관련된 현대 C 표준·방언 지원 개선, 포스트 양자 암호(PQC) 대응 준비, 잠재적 사이드채널 공격에 대한 완화책, 그리고 자주 쓰이지 않는 명령행 옵션 조합까지 포함하는 확장 테스트를 통한 신뢰성 향상이 목표다. 프로젝트 측은 eZ80나 Rabbit 4000 기반 IoT 기기의 펌웨어를 예로 들어, 향상된 아키텍처 지원과 고수준 최적화(NGI0), 그리고 안전 관련 C 기능과 사이드채널 없는 암호 코드 생성(STF)이 함께 맞물리는 그림을 제시한다.

실무적으로 무엇을 의미하나

한국의 임베디드 개발자에게 이 소식의 핵심은 두 가지다. 하나는 상용 컴파일러 라이선스 비용을 감당하기 어려운 저가·틈새 아키텍처에서 SDCC가 실질적인 대안으로서 계속 경쟁력을 키워가고 있다는 점이고, 다른 하나는 그 개선 방향이 마케팅이 아니라 사용자 요청과 안전·보안이라는 구체적 축을 따라간다는 점이다. 다만 기금이 확정됐다는 것이지 기능이 이미 출시됐다는 뜻은 아니다. LTO를 비롯한 항목들은 아직 진행 중이며, PIC 계열처럼 유지보수가 중단된 타깃도 있다는 점은 도입 검토 시 유의해야 한다. 또한 개발이 활발한 만큼 릴리스가 두 달 이상 지났거나 버그를 만났다면 스냅샷 빌드를 시험해 보라는 권고가 있고, 버그 신고 시에는 -v로 확인한 전체 버전 문자열과 재현 가능한 샘플 코드를 함께 제출하는 것이 문제 해결의 지름길이다. 오래 검증돼 온 오픈소스 툴체인이 공적 자금을 만나 어디까지 나아갈지, 8비트 세계를 다루는 팀이라면 다음 릴리스를 눈여겨볼 만하다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://sdcc.sourceforge.net/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...