使用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之类的pk​​g 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...