2

Я установил libportaudio с помощью Homebrew на OS X. Установка прошла успешно, и я проверил наличие символических ссылок на фактические заголовки и библиотеки в /usr/local/include и /usr/local/lib .

Однако сейчас я пытаюсь make привязку Rustlang (https://github.com/JeremyLetang/rust-portaudio), которая использует библиотеки. Это терпит неудачу со следующей ошибкой:

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

Итак, похоже, что cc не ищет библиотеки из префикса /usr /local. Это должно быть так? Как я могу это изменить? Должны ли библиотеки, установленные на домашнем ПК, работать из коробки?

2 ответа2

1

Очевидно, rustc вызывает системный cc для компоновки, и он не настроен для поиска в /usr/local/lib/ библиотек. Возможно, это вина пакета Homebrew rust . (Похоже, что он ищет заголовочные файлы в /usr/local/ .)

Кроме того, пакет rust-portaudio может использовать pkg-config для определения местоположения portaudio .

Я смог позволить ему строить дальше, запустив

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

но потом он сталкивается с другими ошибками, которые я не понимаю.

1

Я решил это, установив

export LIBRARY_PATH="/usr/local/lib"

После того, как LIBRARY_PATH установлен, Cargo также создает rust-portaudio без заминки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .