목차

    🧩 M4 Mac에서 gRPC 빌드 오류 해결기

    protoc 실행 문제부터 Rosetta 설치까지

    🏁 개요

    Mac 환경에서 gRPC를 테스트하고 빌드하던 중 여러 오류가 발생했습니다.
    이 글에서는 protoc 실행 오류와 CPU 아키텍처 문제를 해결한 과정을 정리합니다.

    🚨 1. 오류 발생

    gRPC를 설정하고 빌드하는 과정에서 다음과 같은 오류가 발생했습니다.

    protoc-gen-grpc-java-1.65.0-osx-aarch_64.exe: program not found or is not executable 

    문제의 원인은 protocWindows용 .exe 형식으로 설치되어 Mac에서 실행되지 않은 것이었습니다.

    🔍 2. 원인 및 해결 과정

    검색 결과, grpc-java 공식 이슈 트래커에서 동일한 사례를 발견했습니다.
    문제의 핵심은 protoc를 불러올 때 운영체제(OS)와 아키텍처(classifier)가 명시되지 않아
    잘못된 바이너리가 다운로드된 것이었습니다.

    ✅ 해결 방법

    Gradle 설정에서 classifier를 명시해 Mac용 바이너리를 다운로드하도록 수정합니다.

    protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.14.0:osx-x86_64' } } 

    이 설정을 적용하면 Mac 환경에 맞는 protoc 파일이 다운로드되며,
    이전의 “program not found” 오류가 해결됩니다.

    ⚠️ 3. 추가 문제 — Bad CPU type in executable

    빌드 오류는 사라졌지만, 다음과 같은 새로운 오류가 발생했습니다.

    error=86, Bad CPU type in executable 

    이 오류는 인텔(x86_64)용 바이너리를 ARM(M계열) 기반 Mac에서 실행할 때 발생합니다.
    즉, osx-x86_64 바이너리를 M4 Mac에서 실행할 수 없다는 뜻입니다.

    🧠 4. 최종 해결 — Rosetta 설치

    ARM Mac에서 인텔용 실행 파일을 구동하려면 Rosetta 2가 필요합니다.
    아래 명령어로 간단히 설치할 수 있습니다.

    softwareupdate --install-rosetta 

    설치 후 다시 빌드를 실행하면 정상적으로 동작합니다 ✅

    🧾 정리

    구분 내용
    문제 원인 잘못된 플랫폼용 protoc 바이너리 다운로드
    해결 방법 Gradle 설정에서 classifier 명시 (osx-x86_64, osx-aarch_64 등)
    추가 문제 ARM 기반 Mac에서 인텔 바이너리 실행 불가
    최종 해결 Rosetta 2 설치 후 재빌드 성공

    💡 팁

    • M계열 Mac 사용자는 :osx-aarch_64 classifier를 사용해야 합니다.
    • protoc 버전은 grpc-java 버전에 맞춰 관리하는 것이 좋습니다.
    • 관련 공식 문서: gRPC Java GitHub Issues

    📘 요약
    protoc 실행 오류 → classifier 명시로 해결
    CPU 타입 오류 → Rosetta 설치로 해결



    참조문서

    M1 환경에서 안되던 사람의 해결기

    로제타 설치 관련 오류 해결기