2019年02月18日 13:48:31 6日Simmp 阅读数 1672
该文章主要讲述在windows10+vscode下如何构建一个完整的rust编译调试环境,以及过程中可能出现的问题。
rust 官方提供了一系列版本、包安装管理工具,如rustup和cargo。
初始化
从rustup.rs官网下载rustup-init.exe(其他平台同理),这个软件是一个初始配置包,会帮助你下载选择版本的rustup和cargo。
打开软件后会显示如下信息(translated):
Rust Visual C++ prerequisites
Rust requires the Microsoft C++ build tools for Visual Studio 2013 or later,
but they don't seem to be installed.
The easiest way to acquire the build tools is by installing Microsoft Visual
C++ Build Tools 2019 which provides just the Visual C++ build tools:
https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019
Please ensure the Windows 10 SDK component is included when installing the
Visual C++ Build Tools.
Alternately, you can install Visual Studio 2019, Visual Studio 2017, Visual
Studio 2015, or Visual Studio 2013 and during install select the "C++ tools":
https://visualstudio.microsoft.com/downloads/
Install the C++ build tools before proceeding.
If you will be targeting the GNU ABI or otherwise know what you are doing then
it is fine to continue installation without the build tools, but otherwise,
install the C++ build tools before proceeding.
安装visual cpp build tools
如果你的系统中并没有visual cpp build tools,rustup-init.exe会提示你需要安装此环境,并给出了不用安装vs全家桶的简单环境安装方法,非常人性化。远比那些要求vs部分环境却又不给出链接让你安装全家桶的有着天差地别。
你也可以在此界面选择 Y ,在安装完rust后再安装build tools。
visual cpp build tools 下载地址
---------------------
Welcome to Rust!
欢迎来玩Rust!
This will download and install the official compiler for the Rust programming
language, and its package manager, Cargo.
本向导将会下载并安装Rust官方编译器与包管理工具Cargo。
It will add the cargo, rustc, rustup and other commands to Cargo's bin
directory, located at:
接下来会将cargo、rustc、rustup等二进制文件下载到Cargo的bin文件夹下:
~\.cargo\bin
This path will then be added to your PATH environment variable by modifying the
HKEY_CURRENT_USER/Environment/PATH registry key.
该路径将会添加至当前用户的PATH环境变量中。
You can uninstall at any time with rustup self uninstall and these changes will
be reverted.
你可以自由卸载,并恢复至初。
Current installation options:
当前安装参数:
default host triple: x86_64-pc-windows-msvc
default toolchain: stable
modify PATH variable: yes
1) Proceed with installation (default) 确认并安装(默认)
2) Customize installation 自定义安装
3) Cancel installation 取消安装
> _
默认安装于用户目录下。
该软件默认检查环境变量
CARGO_HOME
、RUSTUP_HOME
,分别为.cargo
、.rustup
设置目录,按需修改(需要注意的是后期包的累积可能会占用巨量的存储空间)。
安装过程中请选择第二项 “Customize installation” !注意到default host triple
中设置的是x86_64-pc-windows-msvc
,而由于本文所使用的调试器是GDB,故需要修改为x86_64-pc-windows-gnu
。default toolchain
请选择stable
,即稳定版。nightly
为前瞻版(更新频率快),'beta’为测试版,实际使用时我们仍需使用到nightly
版,后文会提到。
等待下载完成后可在path
中检查添加~/.cargo/bin
以使用各种命令。
输入rustup --version
以检查是否安装成功。
setting.toml
TOML(Tom’s Obvious Minimal Language) 是一个想要打败yuml的标注语言,caogo项目也有使用。
该文件位于.rustup/
下。
default_host_triple
: 第一次安装时设置,只能对该文件进行修改以改变默认值。default_toolchain
: 默认使用的toolchain,可由rustup default
进行修改。rustup命令
以下列出rustup的部分命令:
> rsutup show
: 列出现在使用的和已安装的rust版本。> rustup update
: 更新所有已安装版本,由于nightly
偶尔会爆肝日更,所以谨慎更新。> rustup default
: 设置将要使用的版本。> rustup component
: 列出(list)、安装(add)、移除(remove)组建。加速
此处使用科大源为例,修改环境变量如下:
RUSTUP_DIST_SERVER
: https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT
: https://mirrors.ustc.edu.cn/rust-static/rustup
将同时加速cargo和rust,下载慢的可以体验一下w。
cargo既是一个类似于npm、pip的包管理软件,又是一个像maven一样的项目框架。一个> cargo help
可以让你懂得它有多nb。
build 编译当前包
check 检查当前包并寻出错误,但不进行编译
clean 删除编译结果(即target文件夹)
doc 构建当前包以及依赖项得文档
new 新建一个crate
init 以当前文件夹初始化一个crate
run 编译并执行src/main.rs
test 执行测试项
bench 执行基准测试项
update 更新所需的依赖项并预编译
search 搜索crates
publish 打包发布
install 安装cargo相关可执行文件,默认路径为 $HOME/.cargo/bin
uninstall 卸载相关可执行文件
更详细的介绍……点❤我❤看❤文。
再此之前,先设置一遍可能用到的环境变量。
RUST
: 某toolchain的目录,如%USER%\.rust\toolchains\stable-x86_64-pc-windows-gnu
。RUST_SRC_PATH
: 改版本rust的源码目录,如%RUST%\lib\rustlib\src\rust\src
,若你的rustlib
中没有src
,请执行> rustup component add rust-src
。RUSTBINPATH
: %CARGO_PATH%\bin
。好,打开VS Code!
商店搜索前两个就是几十万人下载的工具,两个都装上吧?前者是官方的包括rls在内的综合插件。后者虽然是第三方,但功能不比官方少。
你需要在settings.json文件中选择性键入以下内容(为第三方插件配置而不是官方):
"rust.mode": "rls",
"rust.cargoHomePath": "%CARGO_HOME%",
"rust.cargoPath":"%RUSTBINPATH%\\cargo.exe",
"rust.racerPath":"%RUSTBINPATH%\\racer.exe",
"rust.rls":"%RUSTBINPATH%\\rls.exe",
"rust.rustfmtPath":"%RUSTBINPATH%\\rustfmt.exe",
"rust.rustup":"%RUSTBINPATH%\\rustup.exe",
"rust.rustLangSrcPath": "%RUST_SRC_PATH%",
"rust.executeCargoCommandInTerminal": true,
其中"rust.mode"
能选择"legacy"
和"rls"
,前者是使用racer、rustfmt、rustsym等独立的执行文件进行语法检测、跳转,而后者是一个集成的语言服务器。
很巧妙的是官方插件会为你提示是否提供权限安装nightly,请选择允许,并把你的default toolchain设置为nightly。
> rustup default nightly
> rustup update
...
> rustup component add rust-analysis
漫长的安装完成后,写一个小程序试一试。
main.rs
fn main(){
println!("fa ♂");
}
至此,基本能实现实时提示错误、高亮、用户片段。
常见错误
官方插件提示 RLS could not set RUST_SRC_PATH for Racer because it could not read the Rust sysroot.
尝试使用以下方法:
"rust-client.channel": "stable",
或nightly。错误原因如下
stackoverflow:
该插件 readme文件列出了如下依赖:
- Rustup,
- 一个toolchain (插件会在获得权限后自动安装),
- RLS, rust-src, rust-analysis组件.
待补充
LLDB很棒,但是有请我们的TDM-GDB出场(打扰了)。
从sourceforge上下载后,解压得到bin、gdb64、share至某目录(我的是D:\env
)。
配置rust-gdb
之前下载的rust源码(%rust%\lib\rustlib
)提供了一套gdb配置。
修改gdb64\bin
目录下的gdbinit文件,在末尾添加以下代码:
python
print "-- loading rust pretty-printers --"
sys.path.insert(0,'%rust%/lib/rustlib/etc')
import gdb_rust_pretty_printing
gdb_rust_pretty_printing.register_printer(gdb)
end
执行(> bin\gdb.exe
),若能输出”-- loading rust pretty-printers --“并没有报错,说明gdb工具配置成功。
配置Vs Code
安装Native Debug插件(ext install debug
)。
用Vs Code打开你的Cargo工程,添加调试配置GDB,将target指向生成的exe文件,将gdbpath设置为刚刚配置的gdb.exe。
添加一个task,选择cargo build
,设置为preLaunchTask
。
这时你的launch.json大致如下
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "gdb",
"request": "launch",
"preLaunchTask": "cargo build",
"target": "${workspaceRoot}\\target\\debug\\yourapplication.exe",
"gdbpath": "D:\\env\\gdb-tdm64\\bin\\gdb.exe",
"cwd": "${workspaceRoot}"
}
]
}
快快创建断点测试一下吧!
2017年11月04日 08:07:04 songroom 阅读数 7324
有两篇文章值得看看,
https://zhuanlan.zhihu.com/p/29975631
https://zhuanlan.zhihu.com/p/26944087?open_source=weibo_search
另外转:
我推荐VSCode的开发环境,并贡献如下流程,以供参考:
在Windows平台需要预先安装: Microsoft Visual C++ Build Tools 2015
编译器 与 工具链 安装: 下载安装程序
选择安装提示的第二项(而不是default)-启动交互式安装流程:
I’m going to ask you the value of each these installation options. You may simply press the Enter key to leave unchanged.
Default host triple?
x86_64-pc-windows-gnu (解释:为了能够使用gdb进行debug断点,这个是必须的。请不要使用x86_64-pc-windows-msvc分支。它是平台最优,但是gdb不兼容于它。)
Default toolchain? (stable/beta/nightly)
stable(我试了nightly版本,有许多的坑,能不使用nightly版,最好先绕过。)
Modify PATH variable? (y/n)
y
工具链包括: 1. rustc 2. cargo 3. rustup
添加Rust的HOME目录 %USERPROFILE%.cargo\bin到操作系统的PATH环境变量里
验证安装成功: rustc –version
Rust IDE
VSCode目前支持Rust开发扩展插件Rust Code与Native Debug
安装RLS参考:
rustup self update
rustup update nightly
rustup component add rls --toolchain nightly
rustup component add rust-analysis --toolchain nightly
rustup component add rust-src --toolchain nightly
rustup component add rust-src --toolchain stable
添加环境变量
set RUST_SRC_PATH=%USERPROFILE%\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib\rustlib\src\rust\src
或者
set RUST_SRC_PATH=%USERPROFILE%\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src
使用Cargo包管理器安装
cargo install racer
cargo install rustfmt
cargo install rustsym
WASM编译: 安装
rustup target add wasm32-unknown-emscripten stable
编译
cargo build –target=wasm32-unknown-emscripten
或 完整命令
rustup run stable-x86_64-pc-windows-gnu cargo build –target=wasm32-unknown-emscripten
Debug环境配置参考:
a. 安装gdb64
追加如下python脚本到D:\Program Files\gdb-7.9.1-tdm64-2\gdb64\bin\gdbinit文件内。
python
print “—- Loading Rust pretty-printers —-“
from os.path import expanduser
sys.path.insert(0, expanduser(“~”) + “/.rustup/toolchains/stable-x86_64-pc-windows-gnu/lib/rustlib/etc”)
import gdb_rust_pretty_printing
gdb_rust_pretty_printing.register_printers(gdb)
end
https://github.com/Riunshow/NoteBook/issues/6
安装安装 rust 验证安装 前期准备获取 rust 源码使用rustup获取源码最大的好处在于可以使用rustup update随时获取最新版源码,执行以下命令获取源码 安装 racercargo自动安装 安装如果报错,则执行. 详情见racer issue #868 测试 安装 rustfmt Rust Langular Server (RLS)Rust Langular Server(下文简称RLS)可以为很多IDE或编辑器提供包括不限于自动补全、跳转定义、重命名、跳转类型的功能支持。
|