【问题标题】:How to compile a julia script?如何编译 Julia 脚本?
【发布时间】:2015-12-08 02:30:25
【问题描述】:

我注意到 0.4.* 版本的 julia 有一个 --compile 选项。

奇怪的是,我找不到任何关于它的文档。

我正在尝试(在 Ubuntu 中)将 julia 脚本编译为可执行的 LLVM 字节码文件。但是直到这里,我都失败了:

julia --compile=yes --output-bc test.bc test.jl
Segmentation fault (core dumped)

我也可以得到这个错误信息:

julia --compile=yes --output-bc test.bc test.jl
ERROR: could not open file boot.jl

如果我将boot.jl 文件放在同一文件夹中,此错误将不再出现。

我应该如何将 julia 脚本编译为可执行/混淆字节码?

编辑:仅供参考,我的 test.jl 文件仅包含 print(123)

【问题讨论】:

    标签: compilation julia


    【解决方案1】:

    这是一个示例,来自一个在 OS X 上构建的 julia 源代码,其中 /tmp/test.jl 为:

    function foo()
        print(123)
    end
    
    precompile(foo, ())
    

    julia/base/userimg.jl 一样include("/tmp/test.jl")

    julia/base目录中执行以下操作:

    julia --compile=yes --output-bc test.bc -J ../usr/lib/julia/inference.ji sysimg.jl
    

    然后运行llvm-dis test.bc -o test.ll。在(巨大的)图像中的某处,我们有测试函数的相关字节码:

    define internal %jl_value_t* @julia_foo_22542() {
    top:
      %0 = alloca [4 x %jl_value_t*], align 8, !dbg !51528 
    ...
    

    也就是说,截至目前(2015 年 12 月),Julia 不能用于提前编译独立的可执行文件。但是,以下内容可能会引起您的兴趣:

    【讨论】:

    • 谢谢。当我尝试执行.bc 文件时。它说缺少main 函数。即使我在我的源文件中放了一个 main 函数......
    • 查看 BuildExecutable 的链接。首先得到一些可以使用的东西,然后修改它以使用 --output-bc 标志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多