未加载Node-gyp库:/usr/local/lib/libmtp.9.dylib

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

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

任何帮助将不胜感激。

a21221266 回答:未加载Node-gyp库:/usr/local/lib/libmtp.9.dylib

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

,

一种解决方案是在已知的 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 跟踪更容易。

本文链接:https://www.f2er.com/2719617.html

大家都在问