기록

[GPT가 알려주는] 포팅이란? 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] 포팅이란?

heylo 2025. 9. 12. 10:17

좋은 질문이에요 🙆

여기서 말하는 **포팅(porting)**은 단순히 "옮긴다"라는 의미가 아니라, 특정 소프트웨어(모듈, 라이브러리, 엔진 등)를 원래 개발된 환경과는 다른 하드웨어/운영체제 환경에서 돌아가도록 수정하고 적용하는 과정을 말합니다.


포팅의 의미

  • 원래 환경: 예를 들어 WebRTC 오디오 전처리 모듈은 PC(리눅스/윈도우)나 모바일(Android/iOS) 환경에서 동작하도록 만들어졌습니다.
  • 새로운 환경: 지금은 RV1106, T527 같은 임베디드 보드에서 실행해야 하죠.
  • 포팅: 이 모듈이 그 보드에서 문제없이 빌드·실행되도록 코드·빌드 설정·의존성 라이브러리를 수정/적용하는 걸 말합니다.

포팅 과정에서 흔히 하는 일

  1. 컴파일 환경 맞추기
    • PC용 gcc 대신 ARM용 크로스컴파일러를 사용.
    • Makefile / CMakeLists.txt 수정.
  2. 운영체제 API 차이 해결
    • 예: 윈도우 전용 API 호출을 리눅스용으로 변경.
    • 안드로이드 NDK에서 지원하는 함수로 교체.
  3. 하드웨어/드라이버 연동
    • 마이크 입력, 오디오 출력 부분이 보드의 ALSA/Android Audio HAL에 맞게 수정 필요.
  4. 리소스 제약 최적화
    • 임베디드 보드는 CPU·RAM이 적으니, 불필요한 기능을 끄거나 연산량 줄이기.

쉽게 비유하면

  • 포팅 = 환경에 맞는 “옷 갈아입히기”
    같은 사람(소프트웨어)이지만, 겨울에는 두꺼운 옷(리눅스용 빌드), 여름에는 얇은 옷(안드로이드용 빌드)을 입어야 하는 것처럼, 다른 환경에 맞게 "맞춤형 조정"을 하는 게 포팅입니다.

👉 정리:
“디오 전처리 모듈을 보드에 이식(포팅)”이라는 말은 PC/기존 플랫폼에서 개발된 오디오 전처리 모듈을, RV1106이나 T527 같은 임베디드 보드에서 정상 실행되도록 크로스컴파일·코드 수정·환경 맞춤 작업을 한다는 뜻이에요.


원하시면 제가 RV1106 (Linux) vs T527 (Android) 환경에서 포팅 시 달라지는 포인트를 표로 정리해드릴까요?