Eu resolvi isso definindo
export LIBRARY_PATH="/usr/local/lib"
Depois que LIBRARY_PATH é definido, o Cargo constrói o rust-portaudio sem problemas.
Instalei o libportaudio usando o Homebrew no OS X. A instalação foi bem-sucedida e verifiquei que havia links simbólicos para os cabeçalhos e bibliotecas reais em /usr/local/include
e /usr/local/lib
.
No entanto, estou tentando agora make
uma ligação de Rustlang ( link ) que usa as bibliotecas. Ele falha com o seguinte erro:
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
Portanto, parece que cc
não pesquisa bibliotecas do prefixo / usr / local. Isto é suposto ser assim? Como posso mudar isso? As bibliotecas instaladas em homebrew devem funcionar fora da caixa?
Aparentemente, rustc
chama o sistema cc
para vinculação e não está configurado para procurar /usr/local/lib/
nas bibliotecas. Esta é sem dúvida a culpa do pacote Homebrew rust
. (Ele parece procurar por arquivos de cabeçalho em /usr/local/
.)
Como alternativa, o pacote rust-portaudio
pode usar pkg-config
para localizar portaudio
.
Consegui aumentar ainda mais ao executar
make COMPILER='rustc -L/usr/local/lib'
mas depois se depara com outros erros que não entendo.