Rainer
Rainer

Reputation: 8671

Set include directory for linker (ld) on OSX

I have a problem with linking a compiled program (see github repo for details).

The osx specific makefile section is here:

CFLAGS  = -v -arch x86_64  -Wall -fPIC -O2 -I./include $(OPTS)
LDFLAGS = -v -arch x86_64  -lpthread /usr/local/lib/libportaudio.a -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon

EXECUTABLE ?= squeezelite-osx

include Makefile

The compilation works fine, but during the linking it fails with:

Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.11.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -o squeezelite-osx main.o slimproto.o buffer.o stream.o utils.o output.o output_alsa.o output_pa.o output_stdout.o output_pack.o decode.o flac.o pcm.o mad.o vorbis.o faad.o mpg.o dsd.o dop.o dsd2pcm/dsd2pcm.o process.o resample.o -lpthread /usr/local/lib/libportaudio.a -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon -lFLAC -lmad -lvorbisfile -lfaad -lmpg123 -lsoxr -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/lib/darwin/libclang_rt.osx.a
ld: library not found for -lFLAC
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [squeezelite-osx] Error 1

The library which is not found is in the folder /usr/local/include and I think I have to add this path to the include path of the linker.

How can I add the path /usr/local/include to the include path of the linker?

Upvotes: 1

Views: 1305

Answers (1)

trojanfoe
trojanfoe

Reputation: 122381

The linker doesn't use include files; that's the compiler (actually the pre-processor, but let's keep it simple).

Instead you need to tell the linker that it should look in /usr/local/lib using the -L option:

-L/usr/local/lib

Note: you can provide more than one -L option to the linker.

Upvotes: 3

Related Questions