RustToolchains
1.1、RustToolchains简介
是什么 ?:Rust toolchains
开发语言:C
官方主页:https://www.rust-lang.org
源码仓库:https://github.com/rust-lang/rust
1.2、通过脚本安装RustToolchains 

step1、设置环境变量 

export CARGO_HOME=$HOME/.cargo
export RUSTUP_HOME=$HOME/.rustup

export PATH="$CARGO_HOME/bin:$PATH"

export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static

step2、安装依赖

安装时bashCoreUtilscURL
运行时
  • glibc ( libc.solibm.solibdl.solibrt.solibpthread.sold-linux-x86-64.so )
  • GCC ( libgcc_s.so )

step3、使用curl命令下载bash安装脚本,并执行之

curl -sSf https://sh.rustup.rs | bash

说明:

这个安装脚本的作用是去下载一个rustup-init的可执行文件, 你可以把它当成是RustToolchains的安装程序。它又去下载RustToolchains, 并且,他把这两个东西分别安装在$HOME/.rustup$HOME/.cargo目录中。这两个目录你可以随意移动到其他位置, 不过,移动到其他地方之后,一定要修改对应的环境变量RUSTUP_HOMECARGO_HOME

RUSTUP_UPDATE_ROOTrustup-init的下载地址的前面部分。

RUSTUP_DIST_SERVERRustToolchains的下载地址的前面部分。

step4、设置rust-crates的服务器地址为国内镜像

cat > $CARGO_HOME/config <<EOF
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
EOF
1.3、通过编译源码安装RustToolchains 

step1、安装依赖

所有时Terminal + Shell + GNU CoreUtils
下载时cURL
解压时tar + gzip
编译时cmake、 ( gcc + g++ ) / GCC | Clang / LLVMCPython
运行时
  • glibc ( libc.solibm.solibdl.solibrt.solibpthread.sold-linux-x86-64.so )
  • GCC ( libgcc_s.so )

step2、使用curl命令下载RustToolchains源码包 (

curl -LO https://static.rust-lang.org/dist/rustc-1.40.0-src.tar.gz

step3、使用tar解压RustToolchains源码包

tar vxf rustc-1.40.0-src.tar.gz

step4、进入rustc-1.40.0-src目录

cd rustc-1.40.0-src

step5、查看rustc-1.40.0-src目录的内容

step6、使用./configure配置编译参数

./configure是一个可执行的POSIX sh脚本,用它 配置后会产生config.toml

./configure的使用格式如下:

./configure [option]...
option说明
--help | -h查看./configure的使用帮助
--prefix=DIR指定安装目录,默认为/usr/local/
--host=HOST
设置目标程序运行的CPU平台
一般不需要设置,除非你想要交叉编译
默认与宿主机一样
--enable-debug
调试选项。
rust.debug
--enable-vendor使用vendor目录下的库
--enable-rpathruntime path硬编码动态库的搜索路径
--enable-ninja使用ninja构建LLVM
--enable-use-libcxx使用libc++构建LLVM
--enable-optimize-llvm构建LLVM时候进行优化
--enable-optimize构建rust代码的时候进行优化

注意:

enable-FEATURE相反的选项disable-FEATURE

示例:

./configure --prefix=/usr

step7、编译、安装

./x.py build && ./x.py install
1.4、RustToolchains Docker Image 

1、创建$HOME/docker_volume/debian/stretch/sources.list.aliyun

mkdir -p $HOME/docker_volume/debian/stretch
cat    > $HOME/docker_volume/debian/stretch/sources.list.aliyun <<EOF
deb     http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib

deb     http://mirrors.aliyun.com/debian-security stretch/updates main
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main

deb     http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib

deb     http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
EOF

2、创建$HOME/docker_volume/rust/cargo/config

mkdir -p $HOME/docker_volume/rust/cargo
cat    > $HOME/docker_volume/rust/cargo/config <<EOF
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

3、在环境变量配置文件中加入如下的代码:

RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static

rust() {
    docker run \
       -it \
       --rm \
       -v $HOME/docker_volume/debian/stretch/sources.list.aliyun:/etc/apt/sources.list \
       -v $HOME/docker_volume/rust/cargo/config:/usr/local/cargo/config \
       -v $PWD:/usr/src \
       -e RUST_BACKTRACE=1 \
       -e RUSTUP_UPDATE_ROOT=$RUSTUP_UPDATE_ROOT \
       -e RUSTUP_DIST_SERVER=$RUSTUP_DIST_SERVER \
       -w /usr/src \
       rust:1.42.0-slim \
       $@
}

4、使用示例

rust cargo build --release
1.5、RustToolchains中包含的工具