소스에서 Bazel 컴파일

문제 신고하기 소스 보기

이 페이지에서는 소스에서 Bazel을 설치하는 방법을 설명하고 일반적인 문제에 대한 문제 해결 팁을 제공합니다.

소스에서 Bazel을 빌드하려면 다음 중 하나를 실행하면 됩니다.

Bazel을 사용하여 Bazel 빌드

요약

  1. GitHub 출시 페이지 또는 Bazelisk를 통해 최신 Bazel 출시 버전을 가져옵니다.

  2. GitHub에서 Bazel 소스를 다운로드하고 다른 곳에 추출합니다. 또는 https://github.com/bazelbuild/bazel에서 소스 트리를 git 클론할 수 있습니다.

  3. 부트스트랩과 동일한 기본 요건을 설치합니다 (Unix 유사 시스템 또는 Windows 참고).

  4. Bazel을 사용하여 Bazel의 개발 빌드 빌드: bazel build //src:bazel-dev (또는 Windows의 경우 bazel build //src:bazel-dev.exe)

  5. 결과 바이너리는 bazel-bin/src/bazel-dev(또는 Windows의 경우 bazel-bin\src\bazel-dev.exe)에 있습니다. 어디서나 복사하여 추가 설치 없이 즉시 사용할 수 있습니다.

자세한 안내는 다음과 같습니다.

1단계: 최신 Bazel 출시 버전 다운로드

목표: Bazel 출시 버전을 설치하거나 다운로드합니다. 터미널에 bazel를 입력하여 실행할 수 있는지 확인합니다.

이유: GitHub 소스 트리에서 Bazel을 빌드하려면 기존 Bazel 바이너리가 필요합니다. 패키지 관리자에서 패키지를 설치하거나 GitHub에서 다운로드할 수 있습니다. Bazel 설치를 참조하세요. 또는 처음부터 빌드(부트스트랩)할 수 있습니다.

문제해결:

  • 터미널에 bazel를 입력하여 Bazel을 실행할 수 없는 경우 다음을 실행합니다.

    • Bazel 바이너리의 디렉터리가 PATH에 없을 수도 있습니다.

      이것은 큰 문제가 아닙니다. bazel를 입력하는 대신 전체 경로를 입력해야 합니다.

    • Bazel 바이너리 자체가 bazel (Unix) 또는 bazel.exe (Windows)라고 불리지 않을 수도 있습니다.

      이것은 큰 문제가 아닙니다. 바이너리의 이름을 바꾸거나 bazel 대신 바이너리의 이름을 입력할 수 있습니다.

    • 바이너리가 (Unix의 경우) 실행 파일이 아닐 수도 있습니다.

      chmod +x /path/to/bazel를 실행하여 바이너리를 실행 가능하게 만들어야 합니다.

2단계: GitHub에서 Bazel 소스 다운로드

Git에 익숙하다면 git clone https://github.com/bazelbuild/bazel을 사용하세요.

그 이외의 경우

  1. 최신 소스를 ZIP 파일로 다운로드합니다.

  2. 어딘가에 콘텐츠를 추출합니다.

    예를 들어 홈 디렉터리 아래에 bazel-src 디렉터리를 만들고 그곳에서 추출합니다.

3단계: 기본 요건 설치

부트스트랩과 동일한 기본 요건(아래 참고)을 설치합니다(예: JDK, C++ 컴파일러, MSYS2(Windows에서 빌드하는 경우)).

4a단계: Ubuntu Linux, macOS 및 기타 Unix와 유사한 시스템에서 Bazel 빌드

Windows용 안내는 Windows에서 Bazel 빌드를 참고하세요.

목표: Bazel을 실행하여 커스텀 Bazel 바이너리 (bazel-bin/src/bazel-dev)를 빌드합니다.

안내:

  1. Bash 터미널 시작

  2. Bazel의 소스를 추출 (또는 클론)한 디렉터리에 cd를 저장합니다.

    예를 들어 홈 디렉터리에서 소스를 추출한 경우 다음을 실행합니다.

    cd ~/bazel-src
    
  3. 소스에서 Bazel을 빌드합니다.

    bazel build //src:bazel-dev
    

    또는 bazel build //src:bazel --compilation_mode=opt를 실행하여 더 작은 바이너리를 생성할 수 있지만 빌드 속도가 느립니다.

  4. 출력은 bazel-bin/src/bazel-dev (또는 bazel-bin/src/bazel)입니다.

4b단계: Windows에서 Bazel 빌드

Unix 유사 시스템에 대한 안내는 Ubuntu Linux, macOS, 기타 Unix 유사 시스템을 참조하세요.

목표: Bazel을 실행하여 커스텀 Bazel 바이너리(bazel-bin\src\bazel-dev.exe)를 빌드합니다.

안내:

  1. 명령 프롬프트를 시작합니다 (시작 메뉴 > 실행 > 'cmd.exe').

  2. Bazel의 소스를 추출 (또는 클론)한 디렉터리에 cd를 저장합니다.

    예를 들어 홈 디렉터리에서 소스를 추출한 경우 다음을 실행합니다.

    cd %USERPROFILE%\bazel-src
    
  3. 소스에서 Bazel을 빌드합니다.

    bazel build //src:bazel-dev.exe
    

    또는 bazel build //src:bazel.exe --compilation_mode=opt를 실행하여 더 작은 바이너리를 생성할 수 있지만 빌드 속도가 느립니다.

  4. 출력은 bazel-bin\src\bazel-dev.exe (또는 bazel-bin\src\bazel.exe)입니다.

5단계: 빌드된 바이너리 설치

설치할 항목이 없습니다.

이전 단계의 출력은 독립 실행형 Bazel 바이너리입니다. 원하는 디렉터리로 복사하여 즉시 사용할 수 있습니다. 이 디렉터리가 PATH에 있으면 어디에서나 'bazel'을 실행할 수 있습니다.


Bazel 처음부터 빌드 (부트스트랩)

기존 Bazel 바이너리를 사용하지 않고 Bazel을 처음부터 빌드할 수도 있습니다.

1단계: Bazel 소스 다운로드 (배포 보관 파일)

이 단계는 모든 플랫폼에서 동일합니다.

  1. GitHub에서 bazel-<version>-dist.zip을 다운로드합니다(예: bazel-0.28.1-dist.zip).

    주의:

    • 아키텍처에 독립적인 단일 배포 보관 파일이 있습니다. 아키텍처별 또는 OS별 배포 아카이브는 없습니다.
    • 이러한 소스는 GitHub 소스 트리와 동일하지 않습니다. 배포 보관 파일을 사용하여 Bazel을 부트스트랩해야 합니다. GitHub에서 클론한 소스 트리는 사용할 수 없습니다. 배포 보관 파일에는 부트스트랩에 필요하며 일반 Git 소스 트리의 일부가 아닌 생성된 소스 파일이 포함됩니다.
  2. 디스크 어딘가에 배포 아카이브의 압축을 풉니다.

    Bazel의 출시 키 3D5919B448457EE0로 작성된 서명을 확인해야 합니다.

2a단계: Ubuntu Linux, macOS 및 기타 Unix와 유사한 시스템에서 Bazel 부트스트랩하기

Windows용 안내는 Windows의 부트스트랩 Bazel을 참고하세요.

2.1. 기본 요건 설치

  • Bash

  • 압축, 압축 풀기

  • C++ 빌드 도구 모음

  • JDK. 버전 21은 필수 항목입니다.

  • Python. 버전 2 및 3이 지원되므로 둘 중 하나를 설치하면 됩니다.

예를 들어 Ubuntu Linux에서는 다음 명령어를 사용하여 이러한 요구사항을 설치할 수 있습니다.

sudo apt-get install build-essential openjdk-21-jdk python zip unzip

2.2. Unix에서 Bazel 부트스트랩

  1. 셸 또는 터미널 창을 엽니다.

  2. cd를 배포 아카이브의 압축을 푼 디렉터리로 이동합니다.

  3. 컴파일 스크립트 env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh를 실행합니다.

컴파일된 출력은 output/bazel에 배치됩니다. 이는 내장된 JDK가 없는 독립 실행형 Bazel 바이너리입니다. 어디에나 복사하거나 제자리에 사용할 수 있습니다. 편의를 위해 이 바이너리를 PATH에 있는 디렉터리 (예: Linux의 경우 /usr/local/bin)에 복사합니다.

재현 가능한 방식으로 bazel 바이너리를 빌드하려면 '컴파일 스크립트 실행' 단계에서 SOURCE_DATE_EPOCH도 설정합니다.

2b단계: Windows에서 Bazel 부트스트랩

Unix 유사 시스템에 대한 안내는 Ubuntu Linux, macOS, 기타 Unix 유사 시스템의 부트스트랩 Bazel을 참조하세요.

2.1. 기본 요건 설치

  • MSYS2 셸

  • 압축 및 압축 해제를 위한 MSYS2 패키지 MSYS2 셸에서 다음 명령어를 실행합니다.

    pacman -S zip unzip patch
    
  • Visual C++ 컴파일러 Visual Studio 2015 이상의 일부로 또는 최신 Visual Studio 2017용 빌드 도구를 설치하여 Visual C++ 컴파일러를 설치합니다.

  • JDK. 버전 21은 필수 항목입니다.

  • Python. 버전 2 및 3이 지원되므로 둘 중 하나를 설치하면 됩니다. Windows 네이티브 버전 (https://www.python.org에서 다운로드 가능)이 필요합니다. MSYS2에서 팩맨을 통해 설치된 버전은 작동하지 않습니다.

2.2. Windows의 Bazel 부트스트랩

  1. MSYS2 셸을 엽니다.

  2. 다음 환경 변수를 설정합니다.

    • BAZEL_VS 또는 BAZEL_VC (동일하지 않음): Visual Studio 디렉터리 (BAZEL_VS) 또는 Visual C++ 디렉터리 (BAZEL_VC)의 경로로 설정합니다. 둘 중 하나만 설정하면 됩니다.
    • BAZEL_SH: MSYS2 bash.exe의 경로입니다. 아래 예시의 명령어를 참고하세요.

      C:\Windows\System32\bash.exe로 설정하지 마세요. (Linux용 Windows 하위 시스템을 설치한 경우 이 파일이 있습니다.) Bazel은 이 버전의 bash.exe를 지원하지 않습니다.

    • PATH: Python 디렉터리를 추가합니다.

    • JAVA_HOME: JDK 디렉터리로 설정합니다.

    (BAZEL_VS 사용):

    export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    

    또는 (BAZEL_VC 사용):

    export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    
  3. cd를 배포 아카이브의 압축을 푼 디렉터리로 이동합니다.

  4. 컴파일 스크립트 env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh를 실행합니다.

컴파일된 출력은 output/bazel.exe에 배치됩니다. 이는 내장된 JDK가 없는 독립 실행형 Bazel 바이너리입니다. 어디에나 복사하거나 제자리에 사용할 수 있습니다. 편의를 위해 이 바이너리를 PATH에 있는 디렉터리에 복사합니다.

재현 가능한 방식으로 bazel.exe 바이너리를 빌드하려면 '컴파일 스크립트 실행' 단계에서 SOURCE_DATE_EPOCH도 설정합니다.

MSYS2 셸에서 Bazel을 실행할 필요가 없습니다. 명령 프롬프트 (cmd.exe) 또는 PowerShell에서 Bazel을 실행할 수 있습니다.