创建具有依赖项的动态库

Create dynamic library with dependecies

本文关键字:动态 依赖 创建      更新时间:2023-10-16

我是一名Web开发人员,对编译器C++知识非常差。

我有一个Electron应用程序并使用libmtp。我想将 libmtp 包含在我的项目中,以避免在机器上未安装 libmpt 时出现这种情况。

我从nodejs包装器调用libmtp函数:

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

libmtp 依赖于 libusb,所以如果 libusb 没有安装在计算机上,我会收到一个错误

错误:

动态链接错误:dlopen(/Users/username/Projects/projectname/build/projectname-darwin-x64/projectname.app/Content/Resources/app/libmtp.9.dylib,2):库未加载:/usr/local/lib/libusb-1.0.0.dylib

所以问题是我如何将libmtp与libusb连接

起来

我可以考虑两种方法:

  1. 将依赖关系的libmtp重新编译为libusb(如何做到这一点对我来说是一个悬而未决的问题)
  2. 为 libmtp.dylib 设置指向 libusb.dylib 的路径(这对我来说也是一个悬而未决的问题)

感谢您的任何回答!!

您可以将 libusb 放入您的捆绑包中,然后使用 lib-name-tool 更改它的搜索路径。 lib-name-tool 允许您更改对 lib 的搜索,以便它查看您的捆绑包内部而不是/usr/local/lib。这样就不需要安装本地副本。该网站展示了如何使用Qt应用程序做到这一点。原理对你来说是一样的;

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