【问题标题】:PackageCompile Julia system image with local codePackageCompile 使用本地代码编译 Julia 系统映像
【发布时间】:2019-12-04 15:15:15
【问题描述】:

寻求了解 Julia PackageCompiler

我正在构建这样的系统映像

python3 -m julia.sysimage --script="pc.jl" foo.dylib

我的预编译脚本 (pc.jl) 包含这个

module Foo
bah() = "bah"
end

如果我在 REPL 中包含 pc.jl,它会按预期工作

julia> include("pc.jl")
Main.Foo
julia> Main.Foo.bah()
"bah"

但是如果我从我的 sysimage 启动 Julia,Foo 就找不到了

$ julia --sysimage=foo.dylib               _
...
julia> Main.Foo
ERROR: UndefVarError: Foo not defined
julia> Foo
ERROR: UndefVarError: Foo not defined

PackageCompiler 是否可以处理未作为包发布的代码?可以用它来预编译本地个人代码吗?

【问题讨论】:

    标签: compilation julia packagecompiler.jl


    【解决方案1】:

    我认为 PackageCompiler 将所有包含在匿名模块中的代码都放入匿名模块中,以明确防止从 Main 访问它:

    https://github.com/JuliaLang/PackageCompiler.jl/blob/54c0c1255227c8a94de402b41e05d22ea98b5013/src/incremental.jl#L22-L24

    【讨论】:

    • 啊,有道理。谢谢你。所以,我猜答案是 PackageCompiler 旨在编译包中的代码 ;-)
    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 2015-11-09
    • 2012-03-07
    相关资源
    最近更新 更多