2015-12-17 35 views
1

鏈接已編譯的程序時出現問題(有關詳細信息,請參見github repo)。在OSX上設置包含鏈接程序(ld)的目錄

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

鏈接器不使用包含文件;這是編譯器(實際上是預處理器,但讓我們保持簡單)。

相反,你需要使用-L選項告訴它應該在/usr/local/lib鏈接:

-L/usr/local/lib 

注意:您可以提供一個以上的-L選項鍊接。

+0

謝謝 - 這很好。有沒有類似於'''/ usr/local/lib/libportaudio.a'''的文件來避免指定路徑? – Rainer

+0

@Rainer一旦你指定了它,它就適用於所有庫(即提供了一個額外的地方來尋找它們)。如果您添加'-lportaudio'選項,它應該找到該文件。 – trojanfoe

+0

確定 - 用'''-portaudio'''替換''/ usr/local/lib/libportaudio.a''並編譯。非常感謝。 – Rainer

相關問題