Clang nie może zlokalizować libportaudio zainstalowanego w Homebrew

2

Zainstalowałem libportaudio za pomocą Homebrew na OS X. Instalacja się powiodła i sprawdziłem, czy istnieją dowiązania symboliczne do rzeczywistych nagłówków i bibliotek w /usr/local/include i /usr/local/lib.

Jednak teraz próbuję make wiązanie Rustlanga ( https://github.com/JeremyLetang/rust-portaudio ), który korzysta z bibliotek. Niepowodzenie z następującym błędem:

error: linking with `cc` failed: exit code: 1
note: cc '-m64' '-L' '/usr/local/lib/rustlib/x86_64-apple-darwin/lib' '-o' 'target/libportaudio.dylib' 'target/portaudio.o' '-Wl,-force_load,/usr/local/lib/rustlib/x86_64-apple-darwin/lib/libmorestack.a' 'target/portaudio.metadata.o' '-nodefaultlibs' '-fno-lto' '-Wl,-dead_strip' '-L' '/usr/local/lib/rustlib/x86_64-apple-darwin/lib' '-lstd-4e7c5e5c' '-L' '/usr/local/lib/rustlib/x86_64-apple-darwin/lib' '-lsync-4e7c5e5c' '-L' '/usr/local/lib/rustlib/x86_64-apple-darwin/lib' '-lrustrt-4e7c5e5c' '-L' 'target/deps' '-L' '/Users/drasa/repo/rust-portaudio/.rust' '-L' '/Users/drasa/repo/rust-portaudio' '-lportaudio' '-lSystem' '-lpthread' '-lc' '-lm' '-dynamiclib' '-Wl,-dylib' '-lcompiler-rt'
note: ld: warning: directory not found for option '-L/Users/drasa/repo/rust-portaudio/.rust'
ld: library not found for -lportaudio
clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to previous error

Wydaje się, że tak cc nie przeszukuje bibliotek z prefiksu / usr / local. Czy tak powinno być? Jak mogę to zmienić? Czy biblioteki zainstalowane w domu mają działać po wyjęciu z pudełka?

GolDDranks
źródło

Odpowiedzi:

1

Widocznie, rustc wywołuje system cc do łączenia i nie jest skonfigurowany do przeglądania /usr/local/lib/ dla bibliotek. Jest to zapewne wina Homebrew rust pakiet. (Wygląda na to, że szuka plików nagłówkowych pod /usr/local/.)

Alternatywnie rust-portaudio pakiet może użyć pkg-config zlokalizować portaudio.

Mogłem pozwolić, by dalej się budował, uruchamiając

make COMPILER='rustc -L/usr/local/lib'

ale potem napotyka inne błędy, których nie rozumiem.

Peter Eisentraut
źródło
1

Rozwiązałem to, ustawiając

export LIBRARY_PATH="/usr/local/lib"

Po ustawieniu LIBRARY_PATH, Cargo buduje bez problemu rdza-portaudio.

GolDDranks
źródło