1 个不稳定版本
0.1.0 | 2024年5月4日 |
---|
#344 in Cargo 插件
12KB
187 行
cargo-aragonite
cargo-aragonite
是一个 cargo 扩展,用于将 aragonite 项目构建为 .bin 文件,作为位置无关的 shellcode 使用。
它是一个简单的包装器,围绕 cargo
设置额外的参数,当检测到 build
命令时。所有其他参数都透明地传递给底层的 cargo
进程。
安装
cargo install cargo-aragonite
确保您的 $PATH
变量设置正确,以便正确使用 cargo 安装二进制文件。
用法
基本用法是
cargo aragonite build [any other arguments here]
示例
此工作区中的示例可以使用以下方式构建
cargo aragonite build -p examples --bin linux_x64
或
cargo aragonite build -p examples --bin win_x64
注意:目前,cargo-aragonite
仅支持一次构建一个 .bin 文件
详情
cargo-aragonite
提供的过程如下
- 设置一个 cargo 配置文件
aragonite
,使用空间(z
)优化 - 创建一个链接器脚本,删除无关代码并正确排序生成的函数
- 创建一个构建脚本,设置额外的链接器参数以确保生成的文件是一个无外部依赖的静态链接文件
- 解析生成的可执行文件的段,以便只留下程序代码并将其保存到 .bin 文件中
在工作区中使用或与额外的构建脚本一起使用
因为 cargo-aragonite
需要使用 rust 构建脚本来构建参数,所以 cargo-aragonite
也可以用作更复杂工作流程的构建依赖项。将 cargo-aragonite 添加为构建依赖项
# Cargo.toml
[build-dependencies]
cargo-aragonite = "0.1.0"
然后使用 build
函数进行必要的设置
// build.rs
fn main() {
cargo_aragonite::build();
// any other build steps as required
}
请注意,您仍然需要使用 cargo aragonite build
来执行上述步骤中的其余步骤。
此外请注意,对于工作区来说,这并不是严格必要的,但如果没有它,您当前的工作目录必须位于您尝试构建的具体工作区成员内(而不是,使用 cargo aragonite build -p [项目名称]
可以在工作区内的任何地方执行)。
依赖项
~3-12MB
~152K SLoC