Библиотека Node-gyp не загружена: /usr/local/lib/libmtp.9.dylib
Я пытался создать надстройку nodejs-native-addon, которая использует libmtp для выполнения определенных функций. Мне удалось создать приложение, но приложение бросаетLibrary not loaded: /usr/local/lib/libmtp.9.dylib. Referenced from: /path/build/Debug/nbind.node. Reason: image not found
ошибка, когда я пытаюсь запустить его на другом MacBook, где не установлен libmtp.
Это мой файл binding.gyp:
{
"targets": [
{
"includes": [
"auto.gypi"
],
"sources": [
"src/native/mtp.cc"
],
"link_settings": {
"libraries": [
"-lmtp"
],
},
}
],
"includes": [
"auto-top.gypi"
],
}
Я даже попытался включить файл dylib в опцию библиотеки
"link_settings": {
"libraries": [
"<(module_root_dir)/src/native/lib/libmtp.9.dylib"
]
}
но приложение не запускается с Library not loaded: /usr/local/lib/libmtp.9.dylib. Referenced from: /path/build/Debug/nbind.node. Reason: image not found
ошибка.
Любая помощь будет оценена по достоинству.
2 ответа
Ошибка указывает на то, что библиотека libmtp.9.dylib
не может быть найден в стандартной библиотеке включить путь /usr/local/lib
Попробуйте установить переменную среды LD_LIBRARY_PATH
указать на место, где у вас есть libmtp.9.dylib
перед запуском узла.
Одним из решений было бы создать символическую ссылку в известном rpath, например
ln -s <absolute_path>/src/native/lib/libmtp.9.dylib /usr/local/lib/libmtp.9.dylib
Это позволяет файлу находить библиотеку без необходимости настраивать rpath с любым процессом, вызывающим ошибку. На мой взгляд, это проще, чем отслеживать