Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

cfshelor

macrumors newbie
Original poster
Nov 4, 2011
13
0
Hello everyone! I am a casual Xcode user, mostly version 3, but switched to version 4 in December. I am taking a compiler writing course and our initial homework uses lex and yacc.

From a terminal window I can compile the lex output file and execute it using:

gcc lex.yy.c -ll

The gcc being used is from: /Developer/usr/bin and is version

i686-apple-darwin11-llvm-gcc-4.2

Putting the same file into an Xcode project and trying to compile it returns an Apple Mach-O Linker (ld) Error:
ld: library not found for -ll
Command /Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1

I added the -ll link flag in the "Linking" area of the "Build Settings" under the "Other Linker Flags" option line and see it getting included in the gcc command line. I tried using both LLVM GCC 4.2 and Apple LLVM compiler 3.0 as the selected compiler in the "Build Options->Compiler" field. I also tried using -llibl rather than -ll, but that did not work either.

I really want to be able to use Xcode for the assignments later in the course so I don't have to work directly with gdb. Any suggestions as to how to get Xcode to locate the lex and yacc libraries will be greatly appreciated!!!
 

jiminaus

macrumors 65816
Dec 16, 2010
1,449
1
Sydney
Instead of trying to add an explicit library flag, try telling XCode to link to the library instead.

  1. Remove the -ll from Other Linker Flags
  2. Click on the project node at the top of the project navigator
  3. Click on your target in the project editor
  4. Click on the Build Phases tab
  5. Expand Link Binary With Libraries
  6. Click the + button at the bottom of Link Binary With Libraries
  7. Click the Add Other button
  8. Press Shift+Command+G
  9. Enter /usr/lib and click the Go button
  10. Select libl.a
  11. Click the Open button

Notice that it's not libl.a that actually gets linked in, it's libfl.a. This is because libl.a is a symlink to libfl.a. You've not actually been using lex, but the rewritten and extended flex.
 

cfshelor

macrumors newbie
Original poster
Nov 4, 2011
13
0
Perfect!

Thanks for your help jiminaus! It worked perfectly and this should also help with OpenMP and OpenMPI library issues I had been having as well after switching to Xcode 4.x.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.