Создать динамическую библиотеку с зависимостями

Я веб-разработчик и очень плохо разбираюсь в компиляторе C++.

У меня есть приложение Электрон и я использую libmtp для этого. Я хочу включить libmtp в свой проект, чтобы избежать ситуации, когда libmpt не установлен на машине.

Я вызываю функцию libmtp из оболочки nodejs:

...
var mtp = new ffi.Library(pathToSrc + '/libmtp.9.dylib', {
...

libmtp зависит от libusb, поэтому, если libusb не установлен на компьютере, я получаю сообщение об ошибке

Ошибка: Ошибка динамического связывания: dlopen(/Users/username/Projects/projectname/build/projectname-darwin-x64/projectname.app/Contents/Resources/app/libmtp.9.dylib, 2): библиотека не загружена: /usr /local/lib/libusb-1.0.0.dylib

Итак, вопрос в том, Как я могу связать libmtp с libusb.

Я могу думать о 2 способах:

  1. Перекомпилируйте libmtp с зависимостью от libusb (как это сделать, для меня открытый вопрос)
  2. Установите путь к libusb.dylib для libmtp.dylib (для меня это тоже открытая проблема)

Спасибо за любые ответы!!!


person Gleb    schedule 04.02.2016    source источник


Ответы (1)


Вы можете поместить libusb в свой пакет, а затем изменить путь поиска для него с помощью lib-name-tool. lib-name-tool позволяет вам изменить поиск библиотеки, чтобы она искала внутри вашего пакета, а не /usr/local/lib. Таким образом, нет необходимости устанавливать локальную копию. На этом сайте показано, как это сделать с приложениями Qt. Принцип тот же для вас;

http://doc.qt.io/qt-4.8/deployment-mac.html

person john elemans    schedule 04.02.2016