rustup target list --toolchain nightly
的输出中不包含x86_64-apple-ios-macabi
,尽管它在Rust主干分支的src/librustc_target中存在。
我该如何为Mac Catalyst / x86_64-apple-ios-macabi
构建?
rustup target list --toolchain nightly
的输出中不包含x86_64-apple-ios-macabi
,尽管它在Rust主干分支的src/librustc_target中存在。
我该如何为Mac Catalyst / x86_64-apple-ios-macabi
构建?
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
来构建标准库。x86_64-apple-ios-macabi
目标在夜间版(5c5b8afd8 2019-11-16)编译器上可用。仅因为目标可用,并不意味着标准库和相关组件已经编译或可以通过rustup使用:
% rustc +nightly --print target-list | grep macabi
x86_64-apple-ios-macabi
第2.5层平台可以被视为“保证构建”,但没有通过rustup提供的构建
同时,您需要从源代码构建自己的libcore / libstd。我没有时间也没有能力来实际测试编译是否有效,但像这些选择一样是一般的起始路径:
不稳定的-Z build-std
标志可用于构建标准库:
% cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
使用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
@shepmaster 's answer 是正确的。具体来说,您需要:
cargo install xargo
进入您的项目
使用夜间版本构建:
rustup override set nightly
Xargo.toml
文件:[target.x86_64-apple-ios-macabi.dependencies.std]
[profile.release]
部分包含panic = "abort"
。如果没有,请添加它。
构建项目时,请使用xargo
而不是cargo
。rustup toolchain remove nightly
rustup update
rustup toolchain install nightly
xargo
。新的-Z build-std
已经足够让普通的cargo
访问任何未预构建的目标:cargo +nightly build -Z build-std --target x86_64-apple-ios-macabi
。 - dcow