首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在binding.gyp node-gyp for node.js扩展中添加对静态库的依赖

如何在binding.gyp node-gyp for node.js扩展中添加对静态库的依赖
EN

Stack Overflow用户
提问于 2013-09-12 02:04:28
回答 2查看 14.7K关注 0票数 17

我有一个用于构建node.js扩展的简单binding.gyp文件。我想改变"mylib“库的链接方法,并静态链接它,而不是使用共享库。

代码语言:javascript
复制
{
  "targets": [
    {
      "target_name": "myext",
      "sources": [
        "code/main.cpp",
        "code/load.cpp",
        "include/load.h"
      ],
      "include_dirs": [
        "include", "../Library/include"
      ],
      "libraries": [
        "-lmylib", "-L/home/admin/MyLib/Library/binaries/linux/Release"
      ],
      "cflags!": [ "-fno-exceptions" ],
      "cflags": [ "-std=c++11" ],
      "cflags_cc!": [ "-fno-exceptions" ]
    }
  ]
}

mylib的静态版本和共享版本位于同一目录中:

代码语言:javascript
复制
# ls /home/admin/MyLib/Library/binaries/linux/Release
libmylib.a libmylib.so

我想要静态链接,以避免库安装/加载问题。

EN

回答 2

Stack Overflow用户

发布于 2016-10-24 23:55:53

如果我正确地解释了您的代码,您可以让node-gyp使用内置变量module_root_dir为您插入路径,将您的libraries更改为:

代码语言:javascript
复制
"libraries": [
    "-lmylib",
    "-L<(module_root_dir)/../Library/binaries/linux/Release"
],

也许能行得通。虽然我不确定它是否会与.a.so版本链接,但要指定您可以尝试:

代码语言:javascript
复制
"libraries": [
    "<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a"
],

使用out -L前缀和-lmylib。此外,我有点不确定是否允许您遍历根目录以上的内容。我以前没有使用模块根目录以上的任何东西进行过测试。除此之外,你应该已经准备好了。

票数 9
EN

Stack Overflow用户

发布于 2013-11-19 14:20:32

只需在“库”部分添加静态.a或.so文件的路径,

"libraries":“/usr/local/lib/libnetfilter_local e.so.1.3.0”

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18748224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档