All you need to do to build LLDB with Xcode is:

% git clone http://llvm.org/git/lldb.git
% cd lldb
% xcodebuild -configuration Debug -target desktop


The Xcode build will checkout llvm and clang for you in the right spot and with 
the right llvm/clang repository versions. Some repos are locked down to certain 
versions of llvm and clang and it is best to let the build scripts do 
everything for you.

You don't need to set any DYLD_FRAMEWORK_PATH or anything. The "Debug" and 
"Release" configurations will build the "lldb" command line tool with an rpath 
that looks in the same directory as the "lldb" command line tool itself:

% cd build/Debug
% otool -lv lldb | grep -A3 LC_RPATH
          cmd LC_RPATH
      cmdsize 32
         path @loader_path (offset 12)

The "lldb" tool states it needs LLDB that is relative to the path:

% otool -lv lldb | grep -A5 LC_LOAD_DYLIB
...
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name @rpath/LLDB.framework/LLDB (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 340.99.0
compatibility version 1.0.0


So it should load the LLDB framework from the current directory that the "lldb" 
tool is built in. This means you can't move the "lldb" tool to /usr/bin and 
move the "LLDB.framework" to /System/Library/Frameworks because the rpath isn't 
set correctly for that. If you look at the Xcode version of lldb we see if it 
setup differently:

% otool -lv `xcrun -find lldb` | grep -A3 LC_RPATH
          cmd LC_RPATH
      cmdsize 64
         path @loader_path/../../Library/PrivateFrameworks (offset 12)
Load command 18
          cmd LC_RPATH
      cmdsize 56
         path @loader_path/../../../SharedFrameworks (offset 12)
Load command 19
          cmd LC_RPATH
      cmdsize 64
         path @loader_path/../../System/Library/PrivateFrameworks (offset 12)
Load command 20
          cmd LC_RPATH
      cmdsize 64
         path @loader_path/../../Library/PrivateFrameworks (offset 12)
Load command 21


@loader_path is the current directory that contains the "lldb" executable.

Greg


> On May 9, 2015, at 11:44 PM, Vince Harron <vhar...@google.com> wrote:
> 
> I forgot to "export" DYLD_FRAMEWORK_PATH *blush*
> 
> But still, this should be fixed in the documentation or in the build.  Which 
> should it be?
> 
> One step repro:
> 
> #!/bin/bash -ex
> 
> ROOT_DIR=$HOME/ll/fresh
> LLDB_CONFIG=Debug
> LLDB_BIN=$ROOT_DIR/lldb/DerivedData/lldb/Build/Products/$LLDB_CONFIG
> 
> mkdir -p $ROOT_DIR
> cd $ROOT_DIR
> git clone http://llvm.org/git/lldb.git &
> git clone http://llvm.org/git/llvm.git &
> git clone http://llvm.org/git/clang.git &
> wait
> 
> mv clang llvm/tools/clang
> mv llvm lldb
> 
> XCBUILD="xcodebuild -scheme lldb-tool -workspace 
> $ROOT_DIR/lldb/lldb.xcworkspace -configuration $LLDB_CONFIG build"
> # first clean build always fails but second one will succeed!
> $XCBUILD || $XCBUILD
> 
> unset DYLD_FRAMEWORK_PATH
> 
> # launch it
> $LLDB_BIN/lldb
> 
> 
> On Sat, May 9, 2015 at 5:17 PM, Vince Harron <vhar...@google.com> wrote:
> Xcode 6.1.1 on OSX 10.9.5
> 
> 
> On Sat, May 9, 2015 at 5:12 PM, Vince Harron <vhar...@google.com> wrote:
> Hi Greg,
> 
> This is still a problem for me.  I just did a clean checkout and build.  I'm 
> unable to run lldb.  This makes it very difficult to test my changes on OSX.  
> =)
> 
> REPRO STEPS:
> vharron-macpro3:ll vharron$ mkdir fresh
> vharron-macpro3:ll vharron$ cd fresh
> vharron-macpro3:fresh vharron$ git clone http://llvm.org/git/lldb.git
> Cloning into 'lldb'...
> remote: Counting objects: 120337, done.
> remote: Compressing objects: 100% (36468/36468), done.
> remote: Total 120337 (delta 92692), reused 107965 (delta 82116)
> Receiving objects: 100% (120337/120337), 30.90 MiB | 6.67 MiB/s, done.
> Resolving deltas: 100% (92692/92692), done.
> Checking connectivity... done.
> vharron-macpro3:fresh vharron$ git clone http://llvm.org/git/lldb.git
> 
> Open ~/ll/fresh/lldb/lldb.xcworkspace
> Select lldb-tool
> Select Build
> (wait for build to complete successfully)
> 
> vharron-macpro3:Debug vharron$ pwd
> /Users/vharron/ll/fresh/lldb/DerivedData/lldb/Build/Products/Debug
> vharron-macpro3:Debug vharron$ history|less
> vharron-macpro3:Debug vharron$ otool -lv lldb | grep -A2 LC_RPATH
>           cmd LC_RPATH
>       cmdsize 32
>          path @loader_path (offset 12)
> vharron-macpro3:Debug vharron$ ./lldb
> dyld: Library not loaded: @rpath/LLDB.framework/LLDB
>   Referenced from: 
> /Users/vharron/ll/fresh/lldb/DerivedData/lldb/Build/Products/Debug/./lldb
>   Reason: image not found
> Trace/BPT trap: 5
> vharron-macpro3:Debug vharron$ echo $DYLD_FRAMEWORK_PATH 
> /Users/vharron/ll/fresh/lldb/DerivedData/lldb/Build/Products/Debug
> vharron-macpro3:Debug vharron$ ls -l LLDB.framework/LLDB
> lrwxr-xr-x  1 vharron  eng  21 May  8 22:04 LLDB.framework/LLDB -> 
> Versions/Current/LLDB
> vharron-macpro3:Debug vharron$ ls -l LLDB.framework/Versions/Current/LLDB
> -rwxr-xr-x  1 vharron  eng  72990060 May  8 22:04 
> LLDB.framework/Versions/Current/LLDB
> vharron-macpro3:Debug vharron$ ls -l
> total 873336
> drwxr-xr-x  6 vharron  eng        204 May  9 15:55 LLDB.framework
> -rw-r--r--  1 vharron  eng    2806473 May  8 22:04 LLDBWrapPython.cpp
> -rwxr-xr-x  1 vharron  eng   43807600 May  8 22:04 argdumper
> -rwxr-xr-x  1 vharron  eng      49332 May  8 22:04 darwin-debug
> -rwxr-xr-x  1 vharron  eng    5595984 May  9 15:55 debugserver
> -rw-r--r--  1 vharron  eng  353044136 May  8 22:04 liblldb-core.a
> -rwxr-xr-x  1 vharron  eng     147776 May  9 15:55 lldb
> -rwxr-xr-x  1 vharron  eng   41134240 May  9 15:55 lldb-server
> -rw-r--r--  1 vharron  eng     538509 May  8 22:04 lldb.py
> vharron-macpro3:Debug vharron$ 
> 
> 
> On Wed, Feb 11, 2015 at 4:13 PM, Oleksiy Vyalov <ovya...@google.com> wrote:
> It happens to me from time to time but I don't know exactly why - as a 
> workaround, set DYLD_FRAMEWORK_PATH  to your output build directory, e.g. 
> export 
> DYLD_FRAMEWORK_PATH=/Users/ovyalov/google/lldb/git/lldb/DerivedData/lldb/Build/Products/Debug
>  
> 
> On Wed, Feb 11, 2015 at 3:32 PM, Ryan Brown <rib...@google.com> wrote:
> Did you ever figure this out? I'm getting the same thing after updating my 
> lldb sources and rebuilding:
> 
> $ /Users/ribrdb/Documents/git/lldb/DerivedData/lldb/Build/Products/Debug/lldb
> dyld: Library not loaded: @rpath/LLDB.framework/LLDB
>   Referenced from: 
> /Users/ribrdb/Documents/git/lldb/DerivedData/lldb/Build/Products/Debug/lldb
>   Reason: image not found
> Trace/BPT trap: 5
> $ otool -lv 
> /Users/ribrdb/Documents/git/lldb/DerivedData/lldb/Build/Products/Debug/lldb|grep
>  -A2 LC_RPATH
>           cmd LC_RPATH
>       cmdsize 32
>          path @loader_path (offset 12)
> $ file 
> /Users/ribrdb/Documents/git/lldb/DerivedData/lldb/Build/Products/Debug/LLDB.framework/LLDB
> /Users/ribrdb/Documents/git/lldb/DerivedData/lldb/Build/Products/Debug/LLDB.framework/LLDB:
>  Mach-O 64-bit dynamically linked shared library x86_64
> 
> 
> On Mon Feb 02 2015 at 11:38:32 AM Greg Clayton <gclay...@apple.com> wrote:
> As long as you don't build the BuildAndIntegration build you should be good. 
> Build the "Debug" or "Release" configurations and you should be good.
> 
> To find out where the "lldb" binary will search for its @rpath binaries you 
> can type:
> 
> % otool -lv lldb | grep -A2 LC_RPATH
>           cmd LC_RPATH
>       cmdsize 32
>          path @loader_path (offset 12)
> 
> We see the path for a "Debug" configuration is to look in the current 
> directory (@loader_path). If you look at the installed lldb:
> 
> % otool -lv `xcrun -find lldb` | grep -A2 LC_RPATH | grep path
>          path @loader_path/../../Library/PrivateFrameworks (offset 12)
>          path @loader_path/../../../SharedFrameworks (offset 12)
>          path @loader_path/../../System/Library/PrivateFrameworks (offset 12)
>          path @loader_path/../../Library/PrivateFrameworks (offset 12)
> 
> You can see it will look relative to the lldb binary (@loader_path) in a 
> variety of different directories. This is how the BuildAndIntegration version 
> is setup because you would install LLDB in a "bin" folder somewhere (like 
> "/Applications/Xcode.app/Contents/Developer/usr/bin") and it will look for 
> LLDB.framework and any other @rpath binaries using the paths mentioned in the 
> LC_RPATH load commands of the executable.
> 
> Greg
> 
> 
> > On Feb 2, 2015, at 9:29 AM, Oleksiy Vyalov <ovya...@google.com> wrote:
> >
> > Hello,
> >
> > I'm facing some weird problems while trying to run lldb on OSX (10.9.5)
> > It was okay up until recently but now lldb is complaining about not found 
> > dependencies:
> >
> > ovyalov-macpro2:Debug ovyalov$ ./lldb
> > dyld: Library not loaded: @rpath/LLDB.framework/LLDB
> >   Referenced from: 
> > /Users/ovyalov/google/lldb/git/lldb/DerivedData/lldb/Build/Products/Debug/./lldb
> >   Reason: image not found
> > Trace/BPT trap: 5
> >
> > I'm running lldb binary from DerivedData/lldb/Build/Products/Debug 
> > directory. It started to fail for me yesterday and I'm wondering whether 
> > it's XCode or MacOS SDK updates.
> > However, if I set "Linking/Runpath search paths" option as 
> > ..../DerivedData/lldb/Build/Products/Debug then lldb is running without 
> > issues.
> >
> > Please advise what might be wrong here.
> > Thank you in advance.
> >
> >
> > --
> > Oleksiy Vyalov | Software Engineer | ovya...@google.com
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev@cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> 
> -- 
> Oleksiy Vyalov | Software Engineer | ovya...@google.com
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> 
> 
> -- 
> 
> Vince Harron |         Technical Lead Manager |        vhar...@google.com |   
>  858-442-0868
> 
> 
> 
> 
> -- 
> 
> Vince Harron |         Technical Lead Manager |        vhar...@google.com |   
>  858-442-0868
> 
> 
> 
> 
> -- 
> 
> Vince Harron |         Technical Lead Manager |        vhar...@google.com |   
>  858-442-0868
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev


_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to