用户对问题“将node.js从v8更新为v12后加载节点插件时出现未定义的符号”的回答

用户对问题“将node.js从v8更新为v12后加载节点插件时出现未定义的符号”的回答

我已经将我的节点从v8.16.2更新到v12.18.3。当我现在尝试加载我的插件时,我遇到了这个错误:

$ /usr/bin/node -e “require(‘/home/user1/addon.node’)”

internal/modules/cjs/loader.js:1187 return process.dlopen(module, path.toNamespacedPath(filename)); ^Error: /home/user1/addon.node: undefined symbol:_ZNK2v88Function11NewInstanceEiPNS_5LocalINS_5ValueEEE at Object.Module._extensions..node (internal/modules/cjs/loader.js:1187:18) at Module.load (internal/modules/cjs/loader.js:985:32) at Function.Module._load (internal/modules/cjs/loader.js:878:14) at Module.require (internal/modules/cjs/loader.js:1025:19) at require (internal/modules/cjs/helpers.js:72:18) at [eval]:1:1 at Script.runInThisContext (vm.js:120:18) at Object.runInThisContext (vm.js:309:38) at Object. ([eval]-wrapper:10:26) at Module._compile (internal/modules/cjs/loader.js:1137:30)

我发现这个未定义的符号_ZNK2v88Function11NewInstanceEiPNS_5LocalINS_5ValueEEE以前是在节点二进制文件本身中定义的(在更新到节点v12之前在节点v8中)。我没有改变构建节点的方式。也就是说,脚本”configure“的参数没有更改,并且节点v8和节点v12的参数是相同的。但是,现在这个缺失的符号不再在节点v12的节点二进制文件中定义。有人知道为什么会这样吗?

对于节点v12,此符号未定义:

$ readelf -Ws node | grep _ZNK2v88Function11NewInstanceEiPNS_5LocalINS_5ValueEEE

(no any output)

对于节点v8,此符号定义为:

$ readelf -Ws node |grep _ZNK2v88Function11NewInstanceEiPNS_5LocalINS_5ValueEEE

66565: 00000000005167a8 84 FUNC GLOBAL DEFAULT 13 _ZNK2v88Function11NewInstanceEiPNS_5LocalINS_5ValueEEE

为什么在节点v12中不再定义此符号?

谢谢你Aleksej


比丘资源网 » 用户对问题“将node.js从v8更新为v12后加载节点插件时出现未定义的符号”的回答

发表回复

提供最优质的资源集合

立即查看 了解详情