构建时的节点-gyp 链接库依赖项

node-gyp link library dependencies at build time

本文关键字:依赖 链接 -gyp 节点 构建      更新时间:2023-10-16

我的nodejs插件使用cares库,我的binding.gyp dependencies指向此的属性。现在每当我必须运行addon时,我都必须导出LD_LIBRARY_PATH变量。

有没有办法我可以在binding.gyp中配置它,这样每次我都不必设置LD_LIBRARY_PATH.(在构建时链接)

绑定.gyp 中的依赖项设置:"dependencies": [ "deps/cares/cares.gyp:cares" ]

出口:export LD_LIBRARY_PATH=build/Release

"libraries": [ "-Wl,-rpath,./build/Release/" ]

在Mac和Linux(Ubuntu)上为我工作。

我对如何在 binding.gyp node-gyp for node.js 扩展中添加对静态库的依赖的回答似乎也适用于这里,并且应该是跨平台的。

简而言之,它使用module_root_dir并构建绝对路径。例:

"libraries": [
    "-lcares",
    "-L<(module_root_dir)/build/Release/"
]

我使用以下binding.gyp行成功地在 Ubuntu 和 Debian 中获取了相对路径:

"libraries": [ "../lib/somelib/somelib.a" ]

我的文件夹结构如下所示:

|--binding.gyp
|--app.cc
|--lib
   |--somelib
      |--somelib.a

我从这里得到了方法(有点间接):https://github.com/nodejs/node-gyp/issues/49