2015-12-17 3 views
1

У меня возникла проблема со связыванием скомпилированной программы (подробности см. В разделе github repo).Set include directory for linker (ld) на OSX

Конкретный раздел Makefile OSX здесь:

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 

компиляция отлично работает, но во время связывая это терпит неудачу с:

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 

библиотеке, не найден в папке /usr/local/include и я думаю, что я должен добавить этот путь к пути включения компоновщика.

Как добавить путь /usr/local/include к пути включения компоновщика?

ответ

1

В состав компоновщика не включены файлы include; это компилятор (на самом деле препроцессор, но давайте держать его простым).

Вместо этого вы должны сказать компоновщик, что он должен выглядеть в /usr/local/lib с помощью опции -L:

-L/usr/local/lib 

Примечание: Вы можете предоставить более одного -L опцию компоновщика.

+0

Спасибо, что сработало красиво. Есть ли что-то подобное, которое я мог бы использовать для файла '' '/ usr/local/lib/libportaudio.a''', чтобы избежать указания пути туда? – Rainer

+0

@Rainer После того, как вы указали его, оно применимо ко всем библиотекам (т. Е. Предоставляет дополнительное место для их поиска). Он должен найти этот файл, если вы добавите опцию '-lportaudio'. – trojanfoe

+0

OK - заменен '' '/ usr/local/lib/libportaudio.a'''' '' '-lportaudio''' и компилируется. Большое спасибо. – Rainer