从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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

rust可执行文件找不到bcdedit

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从目标代码到可执行文件

来自分类Dev

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

来自分类Dev

从Cython代码创建可执行文件

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从python项目生成可执行文件

来自分类Dev

在QtCreator上生成Linux可执行文件

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

哪个文件是可执行文件

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    rust可执行文件找不到bcdedit

  6. 6

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

  7. 7

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

  8. 8

    从目标代码到可执行文件

  9. 9

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

  10. 10

    从Cython代码创建可执行文件

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

    从python项目生成可执行文件

  18. 18

    在QtCreator上生成Linux可执行文件

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    哪个文件是可执行文件

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档