<<node.js来一打c++扩展>> 第6个demo编译报错
发布于 3 年前 作者 ruinb0w 1955 次浏览 来自 问答

最近在阅读<<node.js来一打c++扩展>>, 在运行第6个demo时报错, 望各位大佬指出哪里错了以及怎么改.

demo地址

以下是报错内容

$ npx node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@3.6.0
gyp info using node@6.9.4 | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/ruinb0w/Lab/node/nyaa-nodejs-demo/6. mapped property interceptor/build'
make: *** No rule to make target 'Release/obj.target/mbedtls/../deps/mbedtls/library/debug.o', needed by 'Release/obj.target/mbedtls.a'.  Stop.
make: Leaving directory '/home/ruinb0w/Lab/node/nyaa-nodejs-demo/6. mapped property interceptor/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ruinb0w/.nvm/versions/node/v6.9.4/lib/node_modules/node-gyp/lib/build.js:285:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 5.10.7-3-MANJARO
gyp ERR! command "/home/ruinb0w/.nvm/versions/node/v6.9.4/bin/node" "/home/ruinb0w/.nvm/versions/node/v6.9.4/bin/node-gyp" "build"
gyp ERR! cwd /home/ruinb0w/Lab/node/nyaa-nodejs-demo/6. mapped property interceptor
gyp ERR! node -v v6.9.4
gyp ERR! node-gyp -v v3.6.0
gyp ERR! not ok
8 回复

我以前也研究过node的原生扩展,但是我不会c++,后来发现go语言也可以开发 https://cnodejs.org/topic/5af4f829adea947348e76300 另外你还可以尝试wasm

如果不迫切需要V8的一些内部功能,建议少用C++扩展而多使用wasm。

C++扩展或者其它语言扩展都会收到V8的API变化的影响,所以很多时候node. js版本一变,C++扩展就运行不了了。

而使用C++编译为wasm两个好处明显不需要因为不同版本Linux重新编译问题,不会因为V8的API变化重新维护问题。第三写wasm一单固定就不太需要改,而减少被迫接手人的心智负担。

我以前也经常会写C++扩展,但wasm完全可以解决调用其它语言库问题,这个时候C++扩展就显得非常鸡肋了,同时学习收益远低于wasm。

@zengming00 go应该现在也很方便编译成wasm了

@zy445566 go语言编译wasm是最简单的,c/c++编译为wasm只需要很少的改动,甚至不需要改动就可以直接编译为wasm,而且几乎所有的语言都已经支持wasm,使用wasm技术一次编译即可为所有支持wasm的语言提供扩展,是非常值得研究和学习的

@zy445566 v8也是读这本书的理由之一, 希望通过这本书对v8能有个基本的概念.

@zengming00 感谢, 我学习下wasm.

@ruinb0w 建议看这里的早期文章,核心概念都有写 https://v8.dev/blog 如果关于node的文章 这篇文章描写node架构骨架还是不错的:https://github.com/yjhjstz/deep-into-node 另我觉得我们论坛里的theanarkh写的很细节:https://github.com/theanarkh/understand-nodejs

回到顶部