#cargo #wrapper #framework #build #path #build-script #aragonite

bin+lib cargo-aragonite

用于与 aragonite 框架一起使用的 cargo 包装器

1 个不稳定版本

0.1.0 2024年5月4日

#344 in Cargo 插件

MIT/Apache

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