Skip to content

Undefined symbols error when building system image on Julia 1.6.0-beta1 #38548

@tomyun

Description

@tomyun

It was originally posted to JuliaLang/PackageCompiler.jl#456, but I'm reposting here as it might be more relevant to Julia compiler itself.

When trying to build a system image containing Unitful 1.5.0 by using PackageCompiler 1.2.3 on the nightly version of Julia 1.6, I got several "Undefined symbols" errors looking for _jfptr_^_XXXXX. It works fine on Julia 1.5.3.

julia> using PackageCompiler

julia> using Unitful

julia> create_sysimage(:Unitful; sysimage_path="./unitful.so")
[ Info: PackageCompiler: creating system image object file, this might take a while...
Undefined symbols for architecture x86_64:
  "_jfptr_^_35271", referenced from:
      _tojlinvoke54351 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54313 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54297 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54296 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54295 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54294 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54293 in jl_KDXP0Q.o(text.o)
      ...
  "_jfptr_^_35340", referenced from:
      _tojlinvoke54348 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54310 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54292 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35394", referenced from:
      _tojlinvoke54346 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54319 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54309 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54291 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54290 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35427", referenced from:
      _tojlinvoke54354 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35467", referenced from:
      _tojlinvoke54345 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35496", referenced from:
      _tojlinvoke54343 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35546", referenced from:
      _tojlinvoke54355 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54330 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54329 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54328 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54327 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54326 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35584", referenced from:
      _tojlinvoke54352 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54336 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35649", referenced from:
      _tojlinvoke54350 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35689", referenced from:
      _tojlinvoke54353 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54298 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35749", referenced from:
      _tojlinvoke54356 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54305 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54304 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54303 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54302 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54301 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54300 in jl_KDXP0Q.o(text.o)
      ...
  "_jfptr_^_35789", referenced from:
      _tojlinvoke54344 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_35831", referenced from:
      _tojlinvoke54347 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54317 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54316 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54315 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54308 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54289 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_36179", referenced from:
      _tojlinvoke54349 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54334 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54325 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54324 in jl_KDXP0Q.o(text.o)
      _tojlinvoke54318 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_36216", referenced from:
      _tojlinvoke54342 in jl_KDXP0Q.o(text.o)
  "_jfptr_^_36245", referenced from:
      _tojlinvoke54341 in jl_KDXP0Q.o(text.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ERROR: failed process: Process(`gcc -m64 -march=x86-64 -shared -L/Applications/Julia-1.6.app/Contents/Resources/julia/lib -o ./unitful.so -Wl,-all_load /var/folders/1k/60gzj8497f54zr9n48bt37r80000gn/T/jl_KDXP0Q.o -ljulia`, ProcessExited(1)) [1]

Stacktrace:
 [1] pipeline_error
   @ ./process.jl:525 [inlined]
 [2] run(::Cmd; wait::Bool)
   @ Base ./process.jl:440
 [3] run
   @ ./process.jl:438 [inlined]
 [4] run_with_env
   @ ~/.julia/packages/PackageCompiler/AerNj/src/PackageCompiler.jl:93 [inlined]
 [5] create_sysimg_from_object_file(input_object::String, sysimage_path::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/AerNj/src/PackageCompiler.jl:465
 [6] create_sysimage(packages::Symbol; sysimage_path::String, project::String, precompile_execution_file::Vector{String}, precompile_statements_file::Vector{String}, incremental::Bool, filter_stdlibs::Bool, replace_default::Bool, cpu_target::String, script::Nothing, base_sysimage::Nothing, isapp::Bool)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/AerNj/src/PackageCompiler.jl:434
 [7] top-level scope
   @ REPL[4]:1
julia> versioninfo()
Julia Version 1.6.0-DEV.1558
Commit e24533d1d1 (2020-11-23 18:27 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.7.0)
  CPU: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.0 (ORCJIT, skylake)

Metadata

Metadata

Assignees

No one assigned

    Labels

    regressionRegression in behavior compared to a previous version

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions