Skip to content

Instantly share code, notes, and snippets.

@hayd1n
Last active December 8, 2025 17:22
Show Gist options
  • Select an option

  • Save hayd1n/cab66ddf913dd03fb4f8a25744510c24 to your computer and use it in GitHub Desktop.

Select an option

Save hayd1n/cab66ddf913dd03fb4f8a25744510c24 to your computer and use it in GitHub Desktop.
Building Helix Editor for linux-musl on macOS

Building Helix Editor for linux-musl on macOS

Requirements

Install rust target

# aarch64
rustup target add aarch64-unknown-linux-musl

# x86_64
rustup target add x86_64-unknown-linux-musl

Install linux musl cross compiler

# aarch64
brew install messense/macos-cross-toolchains/aarch64-unknown-linux-musl

# x86_64
brew install messense/macos-cross-toolchains/x86_64-unknown-linux-musl

Set Environment Variables

Bash / Zsh

# aarch64
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-unknown-linux-musl-gcc
export CC_aarch64_unknown_linux_gnu=aarch64-linux-musl-gcc
export CXX_aarch64_unknown_linux_musl=aarch64-linux-musl-g++
export AR_aarch64_unknown_linux_musl=aarch64-linux-musl-ar

# x86_64
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-musl-gcc
export CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc
export CXX_x86_64_unknown_linux_musl=x86_64-linux-musl-g++
export AR_x86_64_unknown_linux_musl=x86_64-linux-musl-ar

Fish

# aarch64
set -gx CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER aarch64-unknown-linux-musl-gcc
set -gx CC_aarch64_unknown_linux_gnu aarch64-linux-musl-gcc
set -gx CXX_aarch64_unknown_linux_musl aarch64-linux-musl-g++
set -gx AR_aarch64_unknown_linux_musl aarch64-linux-musl-ar

# x86_64
set -gx CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER x86_64-linux-musl-gcc
set -gx CC_x86_64_unknown_linux_musl x86_64-linux-musl-gcc
set -gx CXX_x86_64_unknown_linux_musl x86_64-linux-musl-g++
set -gx AR_x86_64_unknown_linux_musl x86_64-linux-musl-ar

Build

# aarch64
RUSTFLAGS="-C target-feature=-crt-static" cargo build \
         --profile opt \
         --config 'build.rustflags="-C target-cpu=native"' \
         --locked \
         --target aarch64-unknown-linux-musl
         
# x86_64
RUSTFLAGS="-C target-feature=-crt-static" cargo build \
         --profile opt \
         --config 'build.rustflags="-C target-cpu=native"' \
         --locked \
         --target x86_64-unknown-linux-musl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment