cargo-zigbuild
🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub
Compile Cargo project with zig as linker for easier cross compiling.
Installation
cargo install cargo-zigbuild
You can also install it using pip which will also install ziglang automatically:
pip install cargo-zigbuild
We also provide a Docker image which has macOS SDK pre-installed in addition to cargo-zigbuild and Rust, for example to build for x86_64 macOS:
docker run --rm -it -v $(pwd):/io -w /io messense/cargo-zigbuild \
cargo zigbuild --release --target x86_64-apple-darwin
Usage
- Install zig following the official documentation,
on macOS, Windows and Linux you can also install zig from PyPI via
pip3 install ziglang - Install Rust target via rustup, for example,
rustup target add aarch64-unknown-linux-gnu - Run
cargo zigbuild, for example,cargo zigbuild --target aarch64-unknown-linux-gnu
Specify glibc version
cargo zigbuild supports passing glibc version in --target option, for example,
to compile for glibc 2.17 with the aarch64-unknown-linux-gnu target:
cargo zigbuild --target aarch64-unknown-linux-gnu.2.17
macOS universal2 target
cargo zigbuild supports a special universal2-apple-darwin target for building macOS universal2 binaries/libraries on Rust 1.64.0 and later.
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
cargo zigbuild --target universal2-apple-darwin
Note
Note that Cargo
--message-formatoption doesn't work with universal2 target currently.
Caveats
- Currently only Linux, macOS and Windows gnu targets are supported, other target platforms can be added if you can make it work, pull requests are welcome.
- Only current Rust stable and nightly versions are regularly tested on CI, other versions may not work.
Known upstream zig issues:
- zig cc: parse
-targetand-mcpu/-march/-mtuneflags according to clang: Some Rust targets aren't recognized byzig cc, for examplearmv7-unknown-linux-gnueabihf, workaround by using-mcpu=genericand explicitly passing target features in #58 - ability to link against darwin frameworks (such as CoreFoundation) when cross compiling:
Set the
SDKROOTenvironment variable to a macOS SDK path to workaround it - zig misses some
compiler_rtfunctions that may lead to undefined symbol error for certain targets. See also: zig compiler-rt status. - CPU features are not passed to clang
License
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.
Metadata
Release files for cargo-zigbuild 0.17.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 8.7 MB
Release files / cargo_zigbuild-0.17.5-py3-none-win_arm64.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-win_arm64.whl |
|---|---|
| Size | 865.4 kB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
3fe1004715c74d231775f6e4a4d94555282f88e2ff67c5ae9a4b4c6072636025
|
|
BLAKE2b-256 checksum How to use checksums |
c0d0e3b217ac6e519b8fa2d0bad351172ed9e714770927bcb97e9c2e3a091665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-win_amd64.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-win_amd64.whl |
|---|---|
| Size | 907.1 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6700ceb27b53e3cee0f19a41275db367a98ee31d18da2a56ea77fe72d3639451
|
|
BLAKE2b-256 checksum How to use checksums |
6c963676793f160b961d794eeb1fb9e2eae47c37ce1a09f15fd083251b98c10c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-win32.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-win32.whl |
|---|---|
| Size | 847.4 kB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
7393d3d1e2bf30346d5f791968473a350cad8030727709aca19f8c8cb97f0319
|
|
BLAKE2b-256 checksum How to use checksums |
2775f0523085fd614dc9fc01e78c0233ca4ebaad91f35139d44b485baafcb780
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 933.0 kB |
| Tags | Linux glibc 2.17+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
52f994f4cdcecfc7a81a5b0a72da0fd0c85875e2815cec2e715012505f3e013a
|
|
BLAKE2b-256 checksum How to use checksums |
314372b9f4ec4c4cfc08e2bbf494ac576d9f2bc7b70ca9248744f331f267a134
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 979.7 kB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
10ce351dd4ef26fa10cf25e08d2e18385841867b06120151afc2447916e6bbc0
|
|
BLAKE2b-256 checksum How to use checksums |
3cdb0929b9710002c9361494b9099380a1d59c3194dc90ea0ebfbe1b307381a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.5+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
cd39ae96f9daa559f7719bc944dd78ba213a78e2b7e3c5a956b1284a6eae9831
|
|
BLAKE2b-256 checksum How to use checksums |
622e4f4eb82aebbc5d3f9b78ca8fafb55996b17d77f928a5a0bb6fd10ea8d556
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.5+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
0d64de0d905b3f4ca2e4b2ec15fc12ed6827eb4d4bcc0e5f1b3adab9d10ef4f2
|
|
BLAKE2b-256 checksum How to use checksums |
cad10e7b3fec78c73d0282b3590ffc5f195b35bd2bb9db2fbf5c799fbcdd34b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Release files / cargo_zigbuild-0.17.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
| Download URL | cargo_zigbuild-0.17.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
59581f9577b42567bc131cde5fa5cf3722e8a6a6dc142aa52af6758144194146
|
|
BLAKE2b-256 checksum How to use checksums |
2ab4298a33e2801887bbfaedfc2c3dad4d449ed1424dd1c1b2c424d2915c42eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.3.1
|
Security for cargo-zigbuild 0.17.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.