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

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

{ "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的静态和共享版本位于相同的目录中:

 # ls /home/admin/MyLib/Library/binaries/linux/Release libmylib.a libmylib.so 

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

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

“库”:[“/usr/local/lib/libnetfilter_queue.so.1.3.0”]

你可以让node- module_root_dir用内置variablesmodule_root_dir插入你的path如果我正确地解释你的代码,把你的libraries module_root_dir例如:

 "libraries": [ "-lmylib", "-L<(module_root_dir)/../Library/binaries/linux/Release" ], 

可能会做的伎俩。 虽然我不确定它是否会与.a.so版本链接,但要指定您可以尝试:

 "libraries": [ "<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a" ], 

-L前缀和-lmylib 。 此外,我有点不确定是否允许您遍历根目录。 我还没有使用之前的模块根目录之上的任何testing。 除此之外,你应该好好去。