Last active
March 6, 2023 07:00
-
-
Save pich4ya/92a72f2c83a81948c5dc9ea6a498bf67 to your computer and use it in GitHub Desktop.
rust cross-compile for Windows (x86_64) and Linux (x86_64) on M1/M2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# @author Pichaya Morimoto ([email protected]) | |
# The note at https://gist.github.com/shqld/256e2c4f4b97957fb0ec250cdc6dc463 is incomplete. | |
brew uninstall rust | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | |
rustup target add x86_64-pc-windows-gnu | |
rustup target add x86_64-unknown-linux-gnu | |
rustup target list |grep installed | |
### Build Windows x86_64 | |
brew install mingw-w64 | |
cargo build --release --target x86_64-pc-windows-gnu | |
### Build Linux x86_64 | |
brew tap messense/macos-cross-toolchains | |
brew install messense/macos-cross-toolchains/x86_64-unknown-linux-gnu | |
# consider adding theses to ~/.zshrc | |
export CC_X86_64_UNKNOWN_LINUX_GNU=x86_64-unknown-linux-gnu-gcc | |
export CXX_X86_64_UNKNOWN_LINUX_GNU=x86_64-unknown-linux-gnu-g++ | |
export AR_X86_64_UNKNOWN_LINUX_GNU=x86_64-unknown-linux-gnu-ar | |
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=x86_64-unknown-linux-gnu-gcc | |
cargo build --release --target x86_64-unknown-linux-gnu | |
### Output binaries | |
file target/x86_64-pc-windows-gnu/release/binary.exe | |
target/x86_64-pc-windows-gnu/release/binary.exe: PE32+ executable (console) x86-64, for MS Windows | |
file target/x86_64-unknown-linux-gnu/release/binary | |
target/x86_64-unknown-linux-gnu/release/binary: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.16, with debug_info, not stripped | |
# Please note that the binary is not stripped, you need a x86_64 Docker container to strip it. | |
$ strip binary |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment