0

我一直在尝试制作一个使用 libmtp 执行某些功能的 nodejs-native-addon。我已经成功构建了应用程序,但是Library not loaded: /usr/local/lib/libmtp.9.dylib. Referenced from: /path/build/Debug/nbind.node. Reason: image not found当我尝试在另一个未安装 libmtp 的 macbook 上运行它时,应用程序抛出错误。

这是我的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错误启动。

任何帮助将不胜感激。

4

2 回答 2

0

一种解决方案是在已知的 rpath 中创建一个符号链接,例如/usr/local/lib手动到您构建的库。不理想,但它可以为至少在开发中成功构建提供一种解决方法。

ln -s <absolute_path>/src/native/lib/libmtp.9.dylib /usr/local/lib/libmtp.9.dylib 

这允许binding.gyp文件找到库,而无需使用任何引发错误的进程配置 rpath。在我看来,这比追踪跟踪更容易binding.gyp

于 2021-04-22T00:14:48.923 回答
0

该错误表明libmtp.9.dylib在标准库包含路径中找不到该库/usr/local/lib 尝试将环境变量设置LD_LIBRARY_PATH为指向您libmtp.9.dylib在运行节点之前拥有的位置。

于 2020-01-24T10:49:47.493 回答