PDA

View Full Version : -ll linker flag not working




cfshelor
Feb 5, 2012, 03:35 PM
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
Feb 5, 2012, 03:54 PM
Instead of trying to add an explicit library flag, try telling XCode to link to the library instead.


Remove the -ll from Other Linker Flags
Click on the project node at the top of the project navigator
Click on your target in the project editor
Click on the Build Phases tab
Expand Link Binary With Libraries
Click the + button at the bottom of Link Binary With Libraries
Click the Add Other button
Press Shift+Command+G
Enter /usr/lib and click the Go button
Select libl.a
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
Feb 7, 2012, 02:35 PM
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.