Skip to content

Undefined symbols error with Unitful on Julia 1.6.0-DEV #456

@tomyun

Description

@tomyun

When trying to build an image with Unitful 1.4.1 using PackageCompiler 1.2.2 on nightly version of Julia 1.6, I got several "Undefined symbols" error looking for _jfptr_^_XXXXX. It works fine on Julia 1.5.2.

julia> using PackageCompiler

julia> using Unitful

julia> create_sysimage(:Unitful; sysimage_path="./test.so")
[ Info: PackageCompiler: creating system image object file, this might take a while...
Undefined symbols for architecture x86_64:
  "_jfptr_^_27454", referenced from:
      _tojlinvoke52595 in jl_2C87pX.o(text.o)
      _tojlinvoke52557 in jl_2C87pX.o(text.o)
      _tojlinvoke52541 in jl_2C87pX.o(text.o)
      _tojlinvoke52540 in jl_2C87pX.o(text.o)
      _tojlinvoke52539 in jl_2C87pX.o(text.o)
      _tojlinvoke52538 in jl_2C87pX.o(text.o)
      _tojlinvoke52537 in jl_2C87pX.o(text.o)
      ...
  "_jfptr_^_27523", referenced from:
      _tojlinvoke52592 in jl_2C87pX.o(text.o)
      _tojlinvoke52554 in jl_2C87pX.o(text.o)
      _tojlinvoke52536 in jl_2C87pX.o(text.o)
  "_jfptr_^_27577", referenced from:
      _tojlinvoke52590 in jl_2C87pX.o(text.o)
      _tojlinvoke52563 in jl_2C87pX.o(text.o)
      _tojlinvoke52553 in jl_2C87pX.o(text.o)
      _tojlinvoke52535 in jl_2C87pX.o(text.o)
      _tojlinvoke52534 in jl_2C87pX.o(text.o)
  "_jfptr_^_27610", referenced from:
      _tojlinvoke52598 in jl_2C87pX.o(text.o)
  "_jfptr_^_27650", referenced from:
      _tojlinvoke52589 in jl_2C87pX.o(text.o)
  "_jfptr_^_27679", referenced from:
      _tojlinvoke52587 in jl_2C87pX.o(text.o)
  "_jfptr_^_27729", referenced from:
      _tojlinvoke52599 in jl_2C87pX.o(text.o)
      _tojlinvoke52574 in jl_2C87pX.o(text.o)
      _tojlinvoke52573 in jl_2C87pX.o(text.o)
      _tojlinvoke52572 in jl_2C87pX.o(text.o)
      _tojlinvoke52571 in jl_2C87pX.o(text.o)
      _tojlinvoke52570 in jl_2C87pX.o(text.o)
  "_jfptr_^_27767", referenced from:
      _tojlinvoke52596 in jl_2C87pX.o(text.o)
      _tojlinvoke52580 in jl_2C87pX.o(text.o)
  "_jfptr_^_27832", referenced from:
      _tojlinvoke52594 in jl_2C87pX.o(text.o)
  "_jfptr_^_27872", referenced from:
      _tojlinvoke52597 in jl_2C87pX.o(text.o)
      _tojlinvoke52542 in jl_2C87pX.o(text.o)
  "_jfptr_^_27932", referenced from:
      _tojlinvoke52600 in jl_2C87pX.o(text.o)
      _tojlinvoke52549 in jl_2C87pX.o(text.o)
      _tojlinvoke52548 in jl_2C87pX.o(text.o)
      _tojlinvoke52547 in jl_2C87pX.o(text.o)
      _tojlinvoke52546 in jl_2C87pX.o(text.o)
      _tojlinvoke52545 in jl_2C87pX.o(text.o)
      _tojlinvoke52544 in jl_2C87pX.o(text.o)
      ...
  "_jfptr_^_27972", referenced from:
      _tojlinvoke52588 in jl_2C87pX.o(text.o)
  "_jfptr_^_28014", referenced from:
      _tojlinvoke52591 in jl_2C87pX.o(text.o)
      _tojlinvoke52561 in jl_2C87pX.o(text.o)
      _tojlinvoke52560 in jl_2C87pX.o(text.o)
      _tojlinvoke52559 in jl_2C87pX.o(text.o)
      _tojlinvoke52552 in jl_2C87pX.o(text.o)
      _tojlinvoke52533 in jl_2C87pX.o(text.o)
  "_jfptr_^_28362", referenced from:
      _tojlinvoke52593 in jl_2C87pX.o(text.o)
      _tojlinvoke52578 in jl_2C87pX.o(text.o)
      _tojlinvoke52569 in jl_2C87pX.o(text.o)
      _tojlinvoke52568 in jl_2C87pX.o(text.o)
      _tojlinvoke52562 in jl_2C87pX.o(text.o)
  "_jfptr_^_28399", referenced from:
      _tojlinvoke52586 in jl_2C87pX.o(text.o)
  "_jfptr_^_28428", referenced from:
      _tojlinvoke52585 in jl_2C87pX.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 ./test.so -Wl,-all_load /var/folders/1k/60gzj8497f54zr9n48bt37r80000gn/T/jl_2C87pX.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/Beagl/src/PackageCompiler.jl:93 [inlined]
 [5] create_sysimg_from_object_file(input_object::String, sysimage_path::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/Beagl/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/Beagl/src/PackageCompiler.jl:434
 [7] top-level scope
   @ REPL[3]:1
julia> versioninfo()
Julia Version 1.6.0-DEV.1177
Commit 113afd9309 (2020-10-10 16:54 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.5.0)
  CPU: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-10.0.1 (ORCJIT, skylake)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions