David Blaikie
2012-Aug-27 16:42 UTC
[LLVMdev] OSX 10.6 (Snow Leopard): strip: malformed object: clang malformed object (unknown load command 9)
I'm working on bringing up a buildbot in the LLVM lab that would run the GCC and GDB DejaGNU tests. The current problem I'm running into is shown here: http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb-gcc/builds/323/steps/install.clang.stage1/logs/stdio When the buildbot attempts to "make install" the system 'strip' binary fails while attempting to strip the clang binary. I vaguely remember hearing something about the system tools of some version(s) of Mac OSX not being suitable for building LLVM/Clang - so I assume I need to install updated system tools? Is that correct? Does anyone have instructions for how to do this? (I may need to provide these instructions to Galina if I can't run them myself from the command line - though a self service option would be preferred) Thanks, - David
Charles Davis
2012-Aug-27 23:44 UTC
[LLVMdev] OSX 10.6 (Snow Leopard): strip: malformed object: clang malformed object (unknown load command 9)
On Aug 27, 2012, at 10:42 AM, David Blaikie wrote:> I'm working on bringing up a buildbot in the LLVM lab that would run > the GCC and GDB DejaGNU tests. > > The current problem I'm running into is shown here: > http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb-gcc/builds/323/steps/install.clang.stage1/logs/stdio > > When the buildbot attempts to "make install" the system 'strip' binary > fails while attempting to strip the clang binary. > > I vaguely remember hearing something about the system tools of some > version(s) of Mac OSX not being suitable for building LLVM/Clang - so > I assume I need to install updated system tools? Is that correct?Yes.> Does > anyone have instructions for how to do this?Here's what I did. Download the cctools and ld64 source for the latest Xcode (as of this writing, that would be 4.4) from here: http://opensource.apple.com Unpack the tarballs, then build new binaries like so: $ cd cctools-<version>/libstuff $ make dynamic $ cd ../ar $ make # might need this to ensure new ranlib(1) gets called $ cd ../misc $ make libtool.NEW # need this to ranlib(1) archives with new load commands $ sudo install -c -m 0755 libtool.NEW /usr/local/bin/libtool # 'sudo' because /usr/local isn't world writable by default $ cd ../ar $ sudo install -c -m 0755 ar.NEW /usr/local/bin/ar $ sudo ln -s libtool /usr/local/bin/ranlib # will be invoked by ar(1) Now we need the prunetrie library from ld64; otherwise, strip(1) won't build. You build it like so: $ cd ld64-<version>/src/other # No Makefiles in ld64; need to do it the hard way ;) # May need to go in and fix sources in ../abstraction not to refer to ARM # Replace <CXXFLAGS> with whatever flags you might want to pass (like -g, -O, -W options) # Feel free to compile against libc++, if you have it installed $ clang++ -c -I../abstraction <CXXFLAGS> PruneTrie.cpp $ ar cru libprunetrie.a PruneTrie.o # Needs ar(1) and ranlib(1) from before, because I told you to use clang :) $ sudo install -c -m 0644 libprunetrie.a /usr/local/lib/ $ sudo install -d -m 0755 /usr/local/include/mach-o $ sudo install -c -m 0644 prune_trie.h /usr/local/include/mach-o/ $ cd ../../../cctools-<version>/misc # NOTE: If you compiled libprunetrie against libc++, you'll need to make sure strip is linked against libc++, too. You can do that by setting RC_CFLAGS. $ make strip.NEW $ sudo install -c -m 0755 strip.NEW /usr/local/bin/strip I'm sorry about the convoluted build process, but it's been this way for longer than I can remember. (It's one of the reasons the OpenDarwin project bombed so miserably.) I've verified that this works on my own computer, and I even linked against libc++ ;).> (I may need to provide > these instructions to Galina if I can't run them myself from the > command line - though a self service option would be preferred) > > Thanks, > - David > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev