Clang não consegue localizar o libportaudio instalado pelo Homebrew

2

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?

    
por GolDDranks 01.11.2014 / 15:38

2 respostas

1

Eu resolvi isso definindo

export LIBRARY_PATH="/usr/local/lib"

Depois que LIBRARY_PATH é definido, o Cargo constrói o rust-portaudio sem problemas.

    
por 02.11.2014 / 17:51
1

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.

    
por 02.11.2014 / 16:29