如何在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。 除此之外,你应该好好去。
- 使用node-nan在一个node.js模块中设置WindowsHookEx
- 在Visual Studio 2015中构buildnode-gyp项目时发生LNK1104错误
- primefaces编辑器:node-gyp重build崩溃
- node-gyp configure来释放模式
- 堆栈“错误:证书链中的自签名证书”当试图build立“节点gypconfiguration”
- 为什么在Mac OSX El Capitan上node-gyp重build失败
- npm安装失败,因为node-gyp失败。 怎么修?
- 将本地node.js扩展与支持libstd的c ++ 17链接起来
- Yeoman / NPM错误:node-gyp失败