Node.js模块 – 添加链接依赖

我正在为一个同事C库的Node.js包装模块工作。 该库是在共享对象(.so)窗体中创build的,用于dynamic链接。

我的CPP模块文件开始

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

并用以下的wscript构build

 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文件。

任何帮助深表感谢!

你知道dynamic链接器是否可以find你的库吗? 尝试将库path添加到您的LD_LIBRARY_PATH。 在使用testing脚本调用Node之前,可以在shell中运行它:

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

(在Mac上,这将是DYLD_LIBRARY_PATH 。)

Interesting Posts