问题描述
交叉编译?我有一家公司仍在制造的设备,并且已在全球范围内部署,并且在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 (将#修改为@)