如何从 Cargo 发出 LLVM-IR
How to emit LLVM-IR from Cargo
如何让 cargo 为我的项目发出 LLVM-IR 而不是二进制文件?我知道您可以在 rustc
中使用 --emit=llvm-ir
标志,但我读过一些 Github 问题,这些问题表明不可能将任意编译器标志传递给 cargo。
有什么方法可以让货物直接发出 LLVM-IR 吗?
编辑:您应该改用 Jacob 的回答;更容易,更少 hacky。
正常使用 cargo 构建项目,但添加 -v
标志以显示详细输出。该命令将产生如下结果:
casey@casey-ubuntu:~/Documents/project$ cargo build -v
Fresh aster v0.22.1
Fresh num-traits v0.1.34
Fresh itoa v0.1.1
...
Compiling project v0.1.0 (file:///home/casey/Documents/project)
Running `rustc src/main.rs --crate-name ...`
Finished debug [unoptimized + debuginfo] target(s) in 3.54 secs
如果该命令没有产生输出,请在项目代码中的某处进行更改以诱使编译器重建它,因为它只会在检测到其中一个文件发生更改时才重建。
从以 "Running `rustc..." 开头的行上的 ` 标记内复制 rustc
命令并向其附加 --emit=llvm-ir
。
这将在您的 /target/debug 文件夹中生成一个 .ll 文件。
cargo rustc
通过 Cargo 将任意编译器标志传递给 rustc
。所以我认为:
cargo rustc -- --emit=llvm-ir
就是你想要的!
如何让 cargo 为我的项目发出 LLVM-IR 而不是二进制文件?我知道您可以在 rustc
中使用 --emit=llvm-ir
标志,但我读过一些 Github 问题,这些问题表明不可能将任意编译器标志传递给 cargo。
有什么方法可以让货物直接发出 LLVM-IR 吗?
编辑:您应该改用 Jacob 的回答;更容易,更少 hacky。
正常使用 cargo 构建项目,但添加 -v
标志以显示详细输出。该命令将产生如下结果:
casey@casey-ubuntu:~/Documents/project$ cargo build -v
Fresh aster v0.22.1
Fresh num-traits v0.1.34
Fresh itoa v0.1.1
...
Compiling project v0.1.0 (file:///home/casey/Documents/project)
Running `rustc src/main.rs --crate-name ...`
Finished debug [unoptimized + debuginfo] target(s) in 3.54 secs
如果该命令没有产生输出,请在项目代码中的某处进行更改以诱使编译器重建它,因为它只会在检测到其中一个文件发生更改时才重建。
从以 "Running `rustc..." 开头的行上的 ` 标记内复制 rustc
命令并向其附加 --emit=llvm-ir
。
这将在您的 /target/debug 文件夹中生成一个 .ll 文件。
cargo rustc
通过 Cargo 将任意编译器标志传递给 rustc
。所以我认为:
cargo rustc -- --emit=llvm-ir
就是你想要的!