Rust 1.8中引入的Rustup,是一個針對Rust語言的工具鏈管理器(toolchain manager),其目標(biāo)是讓交叉編譯Rust代碼更加簡單。Mozilla工程師Brian Anderson近期與我們分享了關(guān)于此的更多細(xì)節(jié)。
Rustup是一個命令行應(yīng)用,能夠下載并在不同版本的Rust工具鏈中進(jìn)行切換 —— 如編譯器rustc和標(biāo)準(zhǔn)庫,該應(yīng)用所支持的平臺數(shù)量不少。事實上,rustc本身就支持大約56個平臺,而rustup實際上能夠為其中14個平臺管理編譯器,為30個平臺管理標(biāo)準(zhǔn)庫。
此外,rustup能夠追蹤工具鏈的具體版本,包括Rust的nightly版本、beta版本和發(fā)行版本。舉個例子,你可以用rustup檢查程序在下一個Rust發(fā)行版下的行為。但是之前,你需要安裝當(dāng)前平臺下的Rust beta版本的工具鏈,然后利用該工具鏈運(yùn)行單元測試。使用rustup之后,可以通過執(zhí)行類似下面的代碼完成:
$ rustup install beta$ rustup run beta cargo test再舉一個例子,Anderson介紹了如何使用rustup為使用musl標(biāo)準(zhǔn)庫(而非大家常用的glibc標(biāo)準(zhǔn)庫)的Linux版本創(chuàng)建靜態(tài)二進(jìn)制文件:
$ rustup target add x86_64-unknown-linux-musl$ cargo run --target=x86_64-unknown-linux-muslrustup還是一個正在開發(fā)中的產(chǎn)品,將致力于擴(kuò)充支持平臺的數(shù)量。特別要注意,rustup目前還無法針對Android平臺進(jìn)行無縫交叉編譯。這要求開發(fā)者手動下載Android NDK,并針對性地創(chuàng)建一個“獨(dú)立的工具鏈”。Anderson表示,rustup將在未來的版本中解決這個問題,增加獲取并配置所要求的連接器和C語言工具鏈的能。另外,rustup還計劃通過Emscripten支持Web開發(fā)。
rustup是Anderson開發(fā)的multirust的后繼者,并取代了其位置。rustup仍被看作處于beta階段,但是目前已經(jīng)可以安裝并試用。
查看英文原文:Rustup Aims to Make Cross-Compiling Rust Much Easier