如何解决使用libstdc ++so.6错误运行输出时,使用`pkg`为ARMv7 / Ubuntu 14构建Node.js二进制文件失败
交叉编译?我有一家公司仍在制造的设备,并且已在全球范围内部署,并且在ARMv7处理器上运行Ubuntu 14.04.3...。我有一个要为产品系列创建的节点应用程序,我也想在此设备上运行它。尝试将整个nvm
路径直接转到其上的安装并运行节点,但是gyphy无法从设备上的本地项目中构建一些部门。我真的更愿意使用pkg
来构建二进制文件以部署到设备。
如果您不熟悉,pkg
是:https://www.npmjs.com/package/pkg
但是,使用examples/express
之类的pkg 4.4.9从pkg存储库中构建pkg . --targets node10.15.3-linux-armv7 --no-bytecode
示例,并在运行{{ 1}} / Ubuntu 14安装程序,尝试运行二进制文件时出现以下错误:
armv7
(添加了自动换行以打破长行)
搜索错误(特别是关于GLIBC和libstdc ++。so.6的错误)使我无处可寻。我无法弄清楚设备上的libstdc ++是否太旧或太新。尝试更新libstdc ++,但它说它已经是最新版本(适用于该OS。)我不知道从这里去哪里。有没有办法通过pkg使用不同的选项来编译二进制文件,或者静态链接需要它的库而不是依赖系统库?
此外,当我尝试使用较新的节点版本(如10.21.0等)时,它会失败,并显示“无法构建”消息。我知道我可以在该Linux盒上为ARM交叉编译常规C / C ++代码(我们目前正在Linux盒上的云中使用Jenkins进行交叉编译),所以有没有办法让交叉编译在构建时起作用?
这是使用10.21构建的错误:
./express-example: relocation error: ./express-example: symbol
_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE,version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
我发现自己很困-无法直接在设备上运行节点,并且该设备即使运行ARMv7代码,也无法运行[root@decidr ~/devel/pkg/examples/express]# ./node_modules/.bin/pkg . --targets node10-linux-armv7 --no-bytecode
> pkg@4.4.9
> Fetching base Node.js binaries to PKG_CACHE_PATH
fetched-v10.21.0-linux-armv7 [ ] 0%
> Error! 404 Not Found
https://github.com/zeit/pkg-fetch/releases/download/v2.6/uploaded-v2.6-node-v10.21.0-linux-armv7
> Asset not found by direct link:
{"tag":"v2.6","name":"uploaded-v2.6-node-v10.21.0-linux-armv7"}
> Not found in GitHub releases:
{"tag":"v2.6","name":"uploaded-v2.6-node-v10.21.0-linux-armv7"}
> Building base binary from source:
built-v10.21.0-linux-armv7
> Error! Not able to build for 'armv7' here,only for 'x64'
构建的二进制文件。不知道如何前进-任何帮助或想法? :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。