如何在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。 除此之外,你应该好好去。
- 安装npm bluetooth-hci-socket时出错
- 节点JS – 模块没有自行注册
- node-gyp在关于不兼容types的基本Buffer :: Length操作上崩溃
- 用npm安装mmmagic时出错,node-gyp重build失败
- 如何在“node-gyp rebuild”中声明“'NewInstance'已被弃用”警告? v8中NewInstance的替代select是什么?
- 将一个x86 C dll符号包装到nodejs javascript中
- 尝试安装npm软件包'libxmljs'时出错
- npm安装失败,因为node-gyp失败。 怎么修?
- node-gyp:gyp ERR! 无法加载共享的libpython2.7.so.1.0