nodejs在Linux下c++插件运行

nodejs在Linux下c++插件运行


如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

环境:

Linux : ubuntu 16.04

nodejs : 10.15.2

node-gyp : 5.0.3

GCC : 5.4.0

Python : 2.7

1. 安装nodejs

略过

参考:nodejs在Linux下的安装

2.安装node-gyp


node-gyp cmake-js node-addon-api离线安装工具【2022-03-16 add】

git clone https://github.com/itas109/node-gyp-offline-install

git clone https://gitee.com/itas109/node-gyp-offline-install

下载windows离线包

$ node index.js -p win32 -a x64 -v 16.14.0 -m https://npm.taobao.org/mirrors/node/

下载linux离线包

$ node index.js -p linux -a x64 -v 16.14.0 -m https://npm.taobao.org/mirrors/node/

参考https://www.npmjs.com/package/node-gyp

Linux下:

前提:

  • python (推荐 v2.7, v3.x.x 暂未支持)
  • make
  • C/C++编译工具,例如GCC
# 安装
npm install -g node-gyp

建立软连接(这里假设nodejs安装路径为/app/software/)

sudo ln -s /app/software/nodejs/bin/node-gyp /usr/local/bin/ 

查看node-gyp的版本

node-gyp -v

3.编写测试代码

3.1 编写hello.cc

#include <node.h>
#include <v8.h>

using namespace v8;

void Method(const v8::FunctionCallbackInfo<Value>& args) 
{
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);
  args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}

void Init(Handle<Object> exports) 
{
  Isolate* isolate = Isolate::GetCurrent();
  exports->Set(String::NewFromUtf8(isolate, "hello"),
      FunctionTemplate::New(isolate, Method)->GetFunction());

}

NODE_MODULE(hello, Init)

注意,所有的 Node.js 插件必须导出一个如下模式的初始化函数:

void Initialize(Local<Object> exports);
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)

NODE_MODULE 后面没有分号,因为它不是一个函数(详见 node.h)。

module_name 必须匹配最终的二进制文件名(不包括 .node 后缀)。

在 hello.cc 示例中,初始化函数是 Init,插件模块名是 addon。

3.2 编写构建文件binding.gyp

{
  "targets": [
    {
      "target_name": "hello",
      "sources": [ "hello.cc" ]
    }
  ]
}

3.3 编译.node模块

node-gyp configure --debug build

–debug参数表示生成debug文件

3.4 编写hello.js

//hello.js

var addon = require('./build/Debug/hello.node');

console.log(addon.hello()); // 'world'

require的路径需要和3.3中编译出来的路径一致

3.5 运行

node hello.js

3.6 结果

$ node hello.js 
world

觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!
在这里插入图片描述
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033


License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:
1.http://nodejs.cn/api/addons.html
2.https://www.jianshu.com/p/8a9f4304557c
3.https://www.npmjs.com/package/node-gyp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itas109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值