-ll linker flag not working

Discussion in 'Mac Programming' started by cfshelor, Feb 5, 2012.

  1. cfshelor macrumors newbie

    Nov 4, 2011
    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


    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!!!
  2. jiminaus macrumors 65816


    Dec 16, 2010
    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.
  3. cfshelor thread starter macrumors newbie

    Nov 4, 2011

    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.

Share This Page