从LLVM位代码生成Rust可执行文件

列昂纳多·马克斯(Leonardo Marques)

如何生成用Rust编写的应用程序的可执行文件,该应用程序已编译为LLVM-IR位码?

如果我尝试用rustc编译.bc文件,它会告诉我,stream did not contain valid UTF-8而且我似乎无法弄清楚rustc中是否有为此特定的选项。

基本上我想实现这一点:program.rs-> program.bc-> programprogram最终的可执行文件在哪里我应该采取什么步骤来实现这一目标?

谢泼玛特

从此源代码开始:

fn main() {
    println!("Hello, world!");
}

您可以创建LLVM中间表示(IR)或位(BC):

# IR in hello.ll
rustc hello.rs --emit=llvm-ir
# BC in hello.bc
rustc hello.rs --emit=llvm-bc

然后,LLVM可以进一步处理这些文件,以产生程序集目标文件

# Assembly in hello.s
llc hello.bc
# Object in hello.o
llc hello.bc --filetype=obj

然后,您需要链接文件以生成可执行文件。这需要链接到Rust标准库。该路径取决于平台和版本:

cc -L/path/to/stage2/lib/rustlib/x86_64-apple-darwin/lib/ -lstd-2f39a9bd -o hello2 hello.o

然后,您可以运行该程序:

DYLD_LIBRARY_PATH=/path/to/stage2/lib/rustlib/x86_64-apple-darwin/lib/ ./hello2

该答案具有OS X特定的解决方案,但一般概念可扩展到Linux和Windows。Linux的实现会略有不同,而Windows的实现可能会有所不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Vim检测生成的可执行文件

来自分类Dev

64位可执行文件的运行速度低于32位版本

来自分类Dev

从目标代码到可执行文件

来自分类Dev

错误:生成ENOENT:缺少sass可执行文件

来自分类Dev

代码对象和可执行文件之间的区别

来自分类Dev

为什么Rust编译器会生成巨大的可执行文件?

来自分类Dev

gfortran:在64位系统中编译32位可执行文件

来自分类Dev

从Cython代码创建可执行文件

来自分类Dev

可以从相同的源代码生成功能上不同的可执行文件吗?

来自分类Dev

我如何在Windows PE 32位可执行文件中为代码洞穴腾出空间

来自分类Dev

使用Rust在PATH中查找可执行文件

来自分类Dev

从LLVM位代码生成Rust可执行文件

来自分类Dev

生成for Windows中的IntelliJ可执行文件

来自分类Dev

如何从源代码构建铬可执行文件

来自分类Dev

为什么我的64位可执行文件比32位可执行文件大3倍?

来自分类Dev

根据目标平台生成Rust可执行文件或库

来自分类Dev

手动生成的64位可执行文件的PE标头中的映像库出现错误

来自分类Dev

从python项目生成可执行文件

来自分类Dev

在QtCreator上生成Linux可执行文件

来自分类Dev

无法在64位Ubuntu上运行32位动态可执行文件

来自分类Dev

在64位Debian Jessie上运行32位可执行文件

来自分类Dev

Linux上的C ++,确认库中的代码未静态链接到生成的可执行文件中

来自分类Dev

没有设置可执行位时,如何从CD运行可执行文件?

来自分类Dev

哪个文件是可执行文件

来自分类Dev

C#从项目生成动态可执行文件

来自分类Dev

rust可执行文件找不到bcdedit

来自分类Dev

通过PowerShell运行可执行文件并使其正确返回可执行文件的错误代码

来自分类Dev

在可执行文件中添加代码的哈希值

来自分类Dev

如何从此源代码创建可执行文件?

Related 相关文章

  1. 1

    从Vim检测生成的可执行文件

  2. 2

    64位可执行文件的运行速度低于32位版本

  3. 3

    从目标代码到可执行文件

  4. 4

    错误:生成ENOENT:缺少sass可执行文件

  5. 5

    代码对象和可执行文件之间的区别

  6. 6

    为什么Rust编译器会生成巨大的可执行文件?

  7. 7

    gfortran:在64位系统中编译32位可执行文件

  8. 8

    从Cython代码创建可执行文件

  9. 9

    可以从相同的源代码生成功能上不同的可执行文件吗?

  10. 10

    我如何在Windows PE 32位可执行文件中为代码洞穴腾出空间

  11. 11

    使用Rust在PATH中查找可执行文件

  12. 12

    从LLVM位代码生成Rust可执行文件

  13. 13

    生成for Windows中的IntelliJ可执行文件

  14. 14

    如何从源代码构建铬可执行文件

  15. 15

    为什么我的64位可执行文件比32位可执行文件大3倍?

  16. 16

    根据目标平台生成Rust可执行文件或库

  17. 17

    手动生成的64位可执行文件的PE标头中的映像库出现错误

  18. 18

    从python项目生成可执行文件

  19. 19

    在QtCreator上生成Linux可执行文件

  20. 20

    无法在64位Ubuntu上运行32位动态可执行文件

  21. 21

    在64位Debian Jessie上运行32位可执行文件

  22. 22

    Linux上的C ++,确认库中的代码未静态链接到生成的可执行文件中

  23. 23

    没有设置可执行位时,如何从CD运行可执行文件?

  24. 24

    哪个文件是可执行文件

  25. 25

    C#从项目生成动态可执行文件

  26. 26

    rust可执行文件找不到bcdedit

  27. 27

    通过PowerShell运行可执行文件并使其正确返回可执行文件的错误代码

  28. 28

    在可执行文件中添加代码的哈希值

  29. 29

    如何从此源代码创建可执行文件?

热门标签

归档