[MacPorts] #51542: clang-3.8 and clang-3.9 fail to function due to rpath
MacPorts
noreply at macports.org
Wed Jun 1 20:54:37 PDT 2016
#51542: clang-3.8 and clang-3.9 fail to function due to rpath
-------------------------------------+------------------------
Reporter: kenneth.f.cunningham@… | Owner: jeremyhu@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.3.4
Resolution: | Keywords:
Port: clang-3.8 |
-------------------------------------+------------------------
Comment (by kenneth.f.cunningham@…):
Thanks for looking. Wish I had your knowledge. I get similar otool output
to what you get
{{{
$ port select --list clang
Available versions for clang:
mp-clang-3.4
mp-clang-3.7
mp-clang-3.8 (active)
mp-clang-3.9
none
$ port select --list llvm
Available versions for llvm:
mp-llvm-3.4
mp-llvm-3.7
mp-llvm-3.8 (active)
mp-llvm-3.9
none
$ clang hello.c -o hello
dyld: Library not loaded: @rpath/libLLVM.dylib
Referenced from: /opt/local/libexec/llvm-3.8/bin/../lib/libLTO.dylib
Reason: image not found
clang: error: unable to execute command: Trace/BPT trap
clang: error: linker command failed due to signal (use -v to see
invocation)
$ otool -l /opt/local/libexec/llvm-3.8/bin/../lib/libLTO.dylib | grep -A2
LC_RPATH
cmd LC_RPATH
cmdsize 32
path @loader_path (offset 12)
--
cmd LC_RPATH
cmdsize 40
path @executable_path/../lib (offset 12)
}}}
the DYLD_PRINT_RPATHS=1 was not too satisfying - I suspect this might not
be available on snowleopard as I couldn't find it in the man page for dyld
on this machine
{{{
$ export DYLD_PRINT_RPATHS=1
$ clang hello.c -o hellodyld: warning, unknown environment variable:
DYLD_PRINT_RPATHS
dyld: warning, unknown environment variable: DYLD_PRINT_RPATHS
dyld: warning, unknown environment variable: DYLD_PRINT_RPATHS
dyld: warning, unknown environment variable: DYLD_PRINT_RPATHS
dyld: Library not loaded: @rpath/libLLVM.dylib
Referenced from: /opt/local/libexec/llvm-3.8/bin/../lib/libLTO.dylib
Reason: image not found
clang: error: unable to execute command: Trace/BPT trap
clang: error: linker command failed due to signal (use -v to see
invocation)
}}}
Switching back to clang-3.7 everything works fine. Here's the output from
otool for clang-3.7.
{{{
$ sudo port select clang mp-clang-3.7
Selecting 'mp-clang-3.7' for 'clang' succeeded. 'mp-clang-3.7' is now
active.
$ sudo port select llvm mp-llvm-3.7
Selecting 'mp-llvm-3.7' for 'llvm' succeeded. 'mp-llvm-3.7' is now active.
$ clang hello.c -o hello
$ otool -l /opt/local/libexec/llvm-3.7/bin/../lib/libLTO.dylib | grep -A2
LC_RPATH
cmd LC_RPATH
cmdsize 40
path @executable_path/../lib (offset 12)
}}}
and finally, of course setting the library fallback path manually works
{{{
$ export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/libexec/llvm-3.9/lib/
$ clang -v hello.c -o hello
clang version 3.9.0 (trunk 270400)
Target: x86_64-apple-darwin10.8.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-3.9/bin
"/opt/local/libexec/llvm-3.9/bin/clang" -cc1 -triple x86_64-apple-
macosx10.6.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage
-emit-obj -mrelax-all -disable-free -main-file-name hello.c -mrelocation-
model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-
verbose -munwind-tables -target-cpu core2 -target-linker-version 136 -v
-dwarf-column-info -debugger-tuning=lldb -resource-dir
/opt/local/libexec/llvm-3.9/bin/../lib/clang/3.9.0 -fdebug-compilation-dir
/Users/Shared/test_llvm -ferror-limit 19 -fmessage-length 80 -stack-
protector 1 -fblocks -fobjc-runtime=macosx-10.6.0 -fencode-extended-block-
signature -fmax-type-align=16 -fdiagnostics-show-option -fcolor-
diagnostics -o /var/folders/I0/I0fOotq3ErGZHYxrmmWiqU+++TI/-Tmp-/hello-
49b326.o -x c hello.c
clang -cc1 version 3.9.0 based upon LLVM 3.9.0svn default target x86_64
-apple-darwin10.8.0
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/opt/local/libexec/llvm-3.9/bin/../lib/clang/3.9.0/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.
"/opt/local/libexec/llvm-3.9/bin/ld" -demangle -dynamic -arch x86_64
-macosx_version_min 10.6.0 -o hello -lcrt1.10.6.o
/var/folders/I0/I0fOotq3ErGZHYxrmmWiqU+++TI/-Tmp-/hello-49b326.o -lSystem
/opt/local/libexec/llvm-3.9/bin/../lib/clang/3.9.0/lib/darwin/libclang_rt.osx.a
$ ./hello
hello world
}}}
just odd I didn't have to do that manual lib path setting for clang-3.7
hope this is helpful to someone
--
Ticket URL: <https://trac.macports.org/ticket/51542#comment:5>
MacPorts <https://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list