Node.js模块 - 添加链接依赖项

时间:2012-02-11 13:22:21

标签: node.js ld waf

我正在为同事C库开发Node.js包装器模块。该库以共享对象(.so)形式创建,用于动态链接。

我的CPP模块文件以

开头
#include "path/to/lib/source/lib.h"

并使用以下wscript构建

def set_options(ctx):
    ctx.tool_options('compiler_cxx')

def configure(ctx):
    ctx.check_tool('compiler_cxx')
    ctx.check_tool('node_addon')
    ctx.env.append_value('LINKFLAGS', ['-l:lib.so', '-L/path/to/lib.so/'])

def build(ctx):
    t = ctx.new_task_gen('cxx', 'shlib', 'node_addon')
    t.source = ['module.cpp']
    t.target = 'module'

当我继续调用我的模块,然后调用该库时,我收到以下错误:

node: symbol lookup error: <path/to/module.node>:
undefined symbol: <name of library call>

我尝试使用'ldd module.node'转储模块的依赖项,我有点怀疑,因为它没有提到我的.so文件。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您知道动态链接器是否可以找到您的库吗?尝试将库路径添加到LD_LIBRARY_PATH。在使用测试脚本调用Node之前,可以在shell中运行它:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib.so/
node test-script.js

(在Mac上,这将是DYLD_LIBRARY_PATH。)