static-julia icon indicating copy to clipboard operation
static-julia copied to clipboard

Library not loaded: @rpath/"libtiny.dylib" -- image not found

Open NHDaly opened this issue 7 years ago • 1 comments

It looks like the most recent change to support julia v0.7 has broken my system running v0.6.2.

The executable complains for some reason that it cannot find "libhello.dylib", despite it being right there next to it...

 23:03:52 | ~/src/static-julia (master) $ julia juliac.jl -vae hello.jl
Julia program file:
  "/Users/daly/src/static-julia/hello.jl"
C program file:
  "/Users/daly/src/static-julia/program.c"
Build directory:
  "/Users/daly/src/static-julia/builddir"
Change to build directory
Build module image files ".ji" in subdirectory "tmp_v0.6.2":
  `/Applications/Julia-0.6.app/Contents/Resources/julia/bin/julia -Ccore2 -J/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib --compile=yes --depwarn=yes --startup-file=no -e '
  empty!(Base.LOAD_CACHE_PATH) # reset / remove any builtin paths
  push!(Base.LOAD_CACHE_PATH, abspath("tmp_v0.6.2")) # enable usage of precompiled files
  include("/Users/daly/src/static-julia/hello.jl") # include "julia_program" file
  empty!(Base.LOAD_CACHE_PATH) # reset / remove build-system-relative paths'`
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
Build object file "hello.o" in subdirectory "tmp_v0.6.2":
  `/Applications/Julia-0.6.app/Contents/Resources/julia/bin/julia -Ccore2 -J/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib --compile=yes --depwarn=yes --startup-file=no --output-o tmp_v0.6.2/hello.o -e '
  empty!(Base.LOAD_CACHE_PATH) # reset / remove any builtin paths
  push!(Base.LOAD_CACHE_PATH, abspath("tmp_v0.6.2")) # enable usage of precompiled files
  include("/Users/daly/src/static-julia/hello.jl") # include "julia_program" file
  empty!(Base.LOAD_CACHE_PATH) # reset / remove build-system-relative paths'`
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
Build shared library "libhello.dylib" in build directory:
  `gcc -m64 -shared -o libhello.dylib tmp_v0.6.2/hello.o -std=gnu99 -I/Applications/Julia-0.6.app/Contents/Resources/julia/include/julia -DJULIA_ENABLE_THREADING=1 -fPIC -L/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia -ljulia '-Wl,-install_name,@rpath/"libhello.dylib"'`
Build executable file "hello" in build directory:
  `gcc -m64 '-DJULIAC_PROGRAM_LIBNAME="libhello"' -o hello /Users/daly/src/static-julia/program.c libhello.dylib -std=gnu99 -I/Applications/Julia-0.6.app/Contents/Resources/julia/include/julia -DJULIA_ENABLE_THREADING=1 -fPIC -L/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia -ljulia -Wl,-rpath,@executable_path`

 23:05:59 | ~/src/static-julia (master) $ ./builddir/hello
dyld: Library not loaded: @rpath/"libhello.dylib"
  Referenced from: /Users/daly/src/static-julia/./builddir/hello
  Reason: image not found
[4]    55109 abort      ./builddir/hello
 23:06:00 | ~/src/static-julia (master) $

Here it is working before the latest change:

 23:06:26 | ~/src/static-julia (c1f7b20) $ git checkout HEAD~
 23:06:26 | ~/src/static-julia (c1f7b20) $ julia juliac.jl -vae hello.jl
Julia program file:
  "/Users/daly/src/static-julia/hello.jl"
C program file:
  "/Users/daly/src/static-julia/program.c"
Build directory:
  "/Users/daly/src/static-julia/builddir"
Change to build directory
Build ".ji" files:
  `/Applications/Julia-0.6.app/Contents/Resources/julia/bin/julia -Ccore2 -J/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib --compile=yes --depwarn=yes --startup-file=no -e '
  VERSION >= v"0.7+" && Base.init_load_path("/Applications/Julia-0.6.app/Contents/Resources/julia/bin") # initialize location of site-packages
  empty!(Base.LOAD_CACHE_PATH) # reset / remove any builtin paths
  push!(Base.LOAD_CACHE_PATH, abspath("tmp_v0.6.2")) # enable usage of precompiled files
  include("/Users/daly/src/static-julia/hello.jl") # include "julia_program" file
  empty!(Base.LOAD_CACHE_PATH) # reset / remove build-system-relative paths'`
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
Build object file "hello.o":
  `/Applications/Julia-0.6.app/Contents/Resources/julia/bin/julia -Ccore2 -J/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib --compile=yes --depwarn=yes --startup-file=no --output-o tmp_v0.6.2/hello.o -e '
  VERSION >= v"0.7+" && Base.init_load_path("/Applications/Julia-0.6.app/Contents/Resources/julia/bin") # initialize location of site-packages
  empty!(Base.LOAD_CACHE_PATH) # reset / remove any builtin paths
  push!(Base.LOAD_CACHE_PATH, abspath("tmp_v0.6.2")) # enable usage of precompiled files
  include("/Users/daly/src/static-julia/hello.jl") # include "julia_program" file
  empty!(Base.LOAD_CACHE_PATH) # reset / remove build-system-relative paths'`
WARNING: Method definition midpoints(Base.Range{T} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:535.
WARNING: Method definition midpoints(AbstractArray{T, 1} where T) in module Base at deprecated.jl:56 overwritten in module StatsBase at /Users/daly/.julia/v0.6/StatsBase/src/hist.jl:533.
Build shared library "libhello.dylib":
  `gcc -m64 -shared -o libhello.dylib tmp_v0.6.2/hello.o -std=gnu99 -I/Applications/Julia-0.6.app/Contents/Resources/julia/include/julia -DJULIA_ENABLE_THREADING=1 -fPIC -L/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia -ljulia -Wl,-install_name,@rpath/libhello.dylib`
Build executable file "hello":
  `gcc -m64 -o hello /Users/daly/src/static-julia/program.c libhello.dylib -std=gnu99 -I/Applications/Julia-0.6.app/Contents/Resources/julia/include/julia -DJULIA_ENABLE_THREADING=1 -fPIC '-DJULIAC_PROGRAM_LIBNAME="libhello"' -L/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib -Wl,-rpath,/Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia -ljulia -Wl,-rpath,@executable_path`

 23:08:00 | ~/src/static-julia (c1f7b20) $ ./builddir/hello
hello, world
f() = -1.522602195629931
       ┌────────────────────────────────────────┐
   100 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠊⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       │⠀⠀⠀⠀⠀⠀⢀⣀⠤⠔⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
     0 │⣀⠤⠤⠔⠒⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
       └────────────────────────────────────────┘
       1                                       10
 23:08:00 | ~/src/static-julia (c1f7b20) $

I'm on macOS 10.13.3 (17D47), fwiw.

I'm going to try to look now to see if I can find anything that could be responsible...

NHDaly avatar Feb 18 '18 05:02 NHDaly

Ah, okay, it looks like the problem is with the new extra double-quotes around the libname at the end of the shared .dylib build command.

This works on my machine: '-Wl,-install_name,@rpath/libhello.dylib' And this does not: '-Wl,-install_name,@rpath/"libhello.dylib"'.

I'll send a patch now.

NHDaly avatar Feb 18 '18 05:02 NHDaly