我有一个简单的binding.gyp文件,用于构建我的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" ]
}
]
}
Run Code Online (Sandbox Code Playgroud)
mylib的静态和共享版本位于同一目录中:
# ls /home/admin/MyLib/Library/binaries/linux/Release
libmylib.a libmylib.so
Run Code Online (Sandbox Code Playgroud)
我想静态链接以避免库安装/加载问题.
只需在"libraries"部分添加静态.a或.so文件的路径,
"libraries":["/ usr/local/lib/libnetfilter_queue.so.1.3.0"]
您可以让node-gyp使用内置变量为您插入路径module_root_dir
如果我正确解释您的代码,请将您更改libraries
为例如:
"libraries": [
"-lmylib",
"-L<(module_root_dir)/../Library/binaries/linux/Release"
],
Run Code Online (Sandbox Code Playgroud)
可能会做的伎俩.虽然我不确定它是否会与版本.a
或.so
版本链接,但指定您可以尝试:
"libraries": [
"<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a"
],
Run Code Online (Sandbox Code Playgroud)
同出的-L
前缀和-lmylib
.此外,我有点不确定你是否被允许遍历根目录.我之前没有测试过使用模块根目录之上的任何内容.除此之外你应该好好去.
归档时间: |
|
查看次数: |
12598 次 |
最近记录: |