用node-gyp手动编译node的c++扩展模块

本文记录了一次使用带有C++扩展的npm包的经历,包括解决npminstall失败的问题、编译C++扩展的方法及注意事项。介绍了C/C++在位运算上的优势及其在性能提升方面的作用。

又踩坑了,配置永远比单纯的写代码要更花费时间。也更令人挫败。简单记一笔吧。

最近在弄的一个视频拼接的npm包,就有C++扩展,npm install 的时候屡屡不成功,后来总算成功了。实际引入的时候又找不到入口。排查了一下就是里面用到了C++扩展,需要重新编译。后来全局装了node-gyp对着报错把包一个个编译了一遍,终于成功了。

以下是一些知识点:

C/C++对比javascript在位运算上具有极大优势,很多转码、编码的功能可以用C/C++扩展来提升性能。

C++模块通过预先编译为.node文件,然后调用process.dlopen() 加载执行。.node文件实际上在不同平台下是不一样的。如图。

*nix                                |          windows
                                 C/C++源码
g++/gcc编译成.node文件(.so文件)       |          VC++编译成.node文件(.dll文件)
                            dlopen加载.node文件导出给javascript

gyp的意思是generate your projects。node-gyp是一个node的扩展构建工具,通过npm install -g node-gyp安装。写好.gyp项目编译文件后,它会自动按这个文件进行编译。该文件被约定为binding.gyp。一个简单的binding.gyp长这样:

{
"targets": [
    {
      "target_name": 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值