Rust 语言本身包括以下几个部分:
编译器(rustc):将 Rust 代码编译为可执行文件或库。
标准库(std):提供常用的数据结构、算法、I/O 操作等。
Rust 工具链是一个更广泛的概念,包含了开发 Rust 应用程序所需的所有工具和组件
编译器(rustc):和 Rust 语言本身一样,编译器是工具链的核心部分。
Cargo:Rust 的包管理和构建工具。它用于管理依赖、构建项目、运行测试等。
Rustup:Rust 工具链的管理工具。它允许你安装和管理多个 Rust 版本和工具链(如 stable、beta、nightly)。
标准库(std):同样是工具链的一部分,提供了基础的库支持。
其他组件:如 rustfmt(代码格式化工具)、clippy(代码静态分析工具)、rust-docs(文档生成工具)等。
查看当前活跃的工具链和组件
rustup show
安装Rust工具链版本
rustup target add riscv64gc-unknown-none-elf
rust-toolchain.toml 文件用于指定项目所使用的 Rust 工具链版本和相关配置
[toolchain]
channel = "nightly-2023-10-01" # 指定具体的 nightly 版本
components = ["rustfmt", "clippy"]
targets = ["riscv64imac-unknown-none-elf"]
profile = "default" # 使用默认的安装配置
rust-toolchain.toml 文件的配置会影响整个项目,包括所有子工程(subproject)。
.cargo/config.toml
[build]
target = "riscv64imac-unknown-none-elf"
[target.riscv64imac-unknown-none-elf]
rustflags = [
"-C", "link-arg=-Tlinker.ld",
]
项目级别或全局:.cargo/config.toml 文件可以放在项目的根目录,影响整个项目;也可以放在用户的主目录下(~/.cargo/config.toml),影响所有项目。
构建选项:配置默认的构建目标、编译器标志等。
目标平台:可以为特定目标平台配置特定的编译选项。
如果是idea开发的话, 需要配置--target riscv64gc-unknown-none-elf
命令行执行 cargo build 能识别 .cargo/config.toml配置, 但是idea的编译不能
rustup component remove cargo
rustup component add cargo
rust-objcopy 是 Rust 编译工具链的一部分,用于处理目标文件的复制、转换和操作。它是 GNU objcopy 的一个包装器,因此其用法与 GNU objcopy 相似。
cargo install cargo-binutils 负责安装的rust-copy的
验证 rust-objcopy 是否可用: 确保 rust-objcopy 安装成功:
rust-objcopy --version
复制目标文件并更改格式: 将一个 ELF 格式的文件转换为二进制格式:
rust-objcopy --output-format binary input.elf output.bin
剥离(strip)目标文件中的调试信息: 从目标文件中剥离掉调试信息,可以减少文件大小:
rust-objcopy --output-format binary input.elf output.bin
保留特定节段: 保留指定的节段,并删除其它节段:
rust-objcopy --only-keep-debug input.elf debug.elf
重命名段: 将一个段重命名为另一个名称:
rust-objcopy --rename-section .oldname=.newname input.elf output.elf
删除特定段: 从目标文件中删除指定的段:
rust-objcopy --remove-section .comment input.elf output.elf
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。