如何构建 Mac Catalyst / x86_64-apple-ios-macabi?
How do I build for Mac Catalyst / x86_64-apple-ios-macabi?
rustup target list --toolchain nightly
的输出不包含 x86_64-apple-ios-macabi
,即使它在 the Rust master branch 上的 src/librustc_target
中。
如何构建 Mac Catalyst / x86_64-apple-ios-macabi
?
x86_64-apple-ios-macabi
目标在夜间 (5c5b8afd8 2019-11-16) 编译器上可用。仅仅因为目标可用并不意味着标准库和朋友已编译或可用于 rustup:
% rustc +nightly --print target-list | grep macabi
x86_64-apple-ios-macabi
Rust 有一个 tier system (which is the subject of a proposed RFC)。这个目标太新了,它甚至没有列在层级列表中,但它无疑将成为层级 3。层级 2.5 说(强调我的):
Tier 2.5 platforms can be thought of as "guaranteed to build", but without builds available through rustup
同时,您需要从源代码构建您自己的 libcore / libstd。我没有时间也没有能力实际测试编译是否有效,但这些选择是一般的起始路径:
构建标准
不稳定的-Z build-std
标志可用于构建标准库:
% cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
Xargo
可以使用 xargo 工具构建标准库。
% rustup override set nightly
info: using existing install for 'nightly-x86_64-apple-darwin'
info: override toolchain for '/private/tmp/example' set to 'nightly-x86_64-apple-darwin'
nightly-x86_64-apple-darwin unchanged - rustc 1.41.0-nightly (5c5b8afd8 2019-11-16)
% cat > Xargo.toml
[target.x86_64-apple-ios-macabi.dependencies.std]
# features = ["jemalloc"] # Whatever is appropriate
% xargo build --target x86_64-apple-ios-macabi
# Iterate until libcore and libstd compile and work for your platform
是正确的。详细来说,你必须:
- 安装 Xargo:
cargo install xargo
cd 在你的项目中
使用夜间构建:
rustup override set nightly
- 创建
Xargo.toml
文件,内容为:
[target.x86_64-apple-ios-macabi.dependencies.std]
在您的项目 Cargo.toml 中,确保 [profile.release]
部分包含 panic = "abort"
。如果没有,请添加。
构建项目时,使用xargo
代替cargo
。
如果你安装了旧的 Rust,你可能需要每晚删除旧的(或者至少对我来说它不能每晚更新):
rustup toolchain remove nightly
rustup update
rustup toolchain install nightly
Shepmaster 的回答有点过时了。 Cargo 现在支持 -Zbuild-std
命令。使用它,您可以定位 rustc
本身支持的任何目标,即使它们未在 rustup +nightly target list
中列出。只需:
rustc +nightly --print target-list
和
cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
现在应该够了。您不再需要 xargo
来构建标准库。
rustup target list --toolchain nightly
的输出不包含 x86_64-apple-ios-macabi
,即使它在 the Rust master branch 上的 src/librustc_target
中。
如何构建 Mac Catalyst / x86_64-apple-ios-macabi
?
x86_64-apple-ios-macabi
目标在夜间 (5c5b8afd8 2019-11-16) 编译器上可用。仅仅因为目标可用并不意味着标准库和朋友已编译或可用于 rustup:
% rustc +nightly --print target-list | grep macabi
x86_64-apple-ios-macabi
Rust 有一个 tier system (which is the subject of a proposed RFC)。这个目标太新了,它甚至没有列在层级列表中,但它无疑将成为层级 3。层级 2.5 说(强调我的):
Tier 2.5 platforms can be thought of as "guaranteed to build", but without builds available through rustup
同时,您需要从源代码构建您自己的 libcore / libstd。我没有时间也没有能力实际测试编译是否有效,但这些选择是一般的起始路径:
构建标准
不稳定的-Z build-std
标志可用于构建标准库:
% cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
Xargo
可以使用 xargo 工具构建标准库。
% rustup override set nightly
info: using existing install for 'nightly-x86_64-apple-darwin'
info: override toolchain for '/private/tmp/example' set to 'nightly-x86_64-apple-darwin'
nightly-x86_64-apple-darwin unchanged - rustc 1.41.0-nightly (5c5b8afd8 2019-11-16)
% cat > Xargo.toml
[target.x86_64-apple-ios-macabi.dependencies.std]
# features = ["jemalloc"] # Whatever is appropriate
% xargo build --target x86_64-apple-ios-macabi
# Iterate until libcore and libstd compile and work for your platform
- 安装 Xargo:
cargo install xargo
cd 在你的项目中
使用夜间构建:
rustup override set nightly
- 创建
Xargo.toml
文件,内容为:
[target.x86_64-apple-ios-macabi.dependencies.std]
在您的项目 Cargo.toml 中,确保
[profile.release]
部分包含panic = "abort"
。如果没有,请添加。构建项目时,使用
xargo
代替cargo
。
如果你安装了旧的 Rust,你可能需要每晚删除旧的(或者至少对我来说它不能每晚更新):
rustup toolchain remove nightly
rustup update
rustup toolchain install nightly
Shepmaster 的回答有点过时了。 Cargo 现在支持 -Zbuild-std
命令。使用它,您可以定位 rustc
本身支持的任何目标,即使它们未在 rustup +nightly target list
中列出。只需:
rustc +nightly --print target-list
和
cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
现在应该够了。您不再需要 xargo
来构建标准库。