피드로 돌아가기
链接器错误的一波三折
Dev.toDev.to
Mobile

链接器错误的一波三折

알 수 없는 Linker Error, 범인은 잘못 쓰인 메서드 하나

Ting2026년 4월 7일2intermediate

Context

SDK 내부에 RegexBuilder 라이브러리를 도입하며 신규 정규표현식 타입을 정의. 다운스트림 SDK 빌드 과정에서 arm64 아키텍처의 Undefined symbols 링크 에러 발생. 정확한 에러 발생 지점을 찾기 어려운 모호한 컴파일러 메시지 구조.

Technical Solution

  • visionOS 미지원 가능성을 검토했으나 플랫폼 호환성 문제 아님을 확인
  • Swift 6.0과 6.2 버전의 import 동작 차이(public vs internal)를 분석하여 public import RegexBuilder로 일시적 해결 시도
  • public import 적용 시 내부 전용 심볼의 외부 노출로 인한 컴파일러 경고 발생 확인
  • 이분법적 파일 삭제(Binary Search) 방식을 통해 에러를 유발하는 특정 뷰 파일 식별
  • Swift 표준 라이브러리의 hasPrefix 대신 RegexBuilder 전용 메서드인 starts(with:)를 잘못 사용한 코드 발견 및 수정
  • 잘못된 메서드 호출로 인해 의존성 없는 파일에서 RegexBuilder 심볼을 참조하게 된 링크 오류 원인 제거

Key Takeaway

컴파일러의 모호한 심볼 에러는 단순 설정 문제가 아닌, 라이브러리 미포함 상태에서 유사한 이름의 타 라이브러리 메서드를 오용한 사례일 가능성을 고려해야 함.


Undefined symbols 에러 발생 시, 최근 추가된 코드 중 타 라이브러리 전용 메서드를 표준 API로 오인해 사용했는지 우선 점검할 것

원문 읽기