在过去的几天里,我花了很多时间在Linaro集群上运行Ubuntu 16.04 for ARM64(aarch64)上运行的mongo shell。 我目前正在ARM架构上为meteorjs开发下一个发行版本。
TL; DR
虽然mongod(DB)在编译完成后仍然运行良好,但没有看到任何问题,但在构build之后,无法获得正在运行的mongo shell [即使不支持javascript(mozjs))。
最简单的构build:
mkdir -p / tmp / mongo-build
cd / tmp / mongo-build
git clone --branch“r3.2.6”--depth 1 https://github.com/mongodb/mongo.git
cd mongo
scons --disable-warnings-as-errors --prefix = / tmp / mongo-build / mongo --js-engine = mozjs mongo mongod
即使这个版本将在所有经过testing的平台和体系结构(armv7l,aarch64,amd64上的Linux)上运行,在编译期间没有问题,但运行程序的结果不同。
专用的交叉编译开源软件的方式
如何调用MyChecksum而不是KernelChecksum(KernelChecksum汇编编码)
为Linux 2.6.30 DMA API映射设备内存
如何交叉编译工具链到ARMv5平台?
ARM上未alignment内存访问的函数
在amd64上运行后运行mongo命令:
只要运行mongo shell并尝试连接到一个不存在的实例
./mongo mongodb:// localhost:5002 / sample
这会给出这个输出:
MongoDBshell版本:3.2.6
连接到:mongodb:// localhost:5002 / sample
2016-07-05T14:10:23.772 + 0200 W NETWORK [thread1]无法连接到127.0.0.1:5002,原因是:errno:111连接被拒绝
2016-07-05T14:10:23.772 + 0200 E QUERY [thread1]错误:无法连接到服务器localhost:5002,连接尝试失败:
connect@src/mongo/shell/mongo.js:223:14
@(连接):1:6
exception:连接失败
在aarch64 / armv7l上构build后运行mongo命令:
相反,ARM的输出只是:
MongoDBshell版本:3.2.6
分割故障(核心转储)
在我看来,TCP连接部分可能会提出“分段错误”,但我不能debugging。
我会很高兴能得到这个运行的任何帮助。
谢谢汤姆
ARM交叉编译,多重inheritance分段错误
什么是更好的方式来宣布在基于arm的拱门上的标志?
电平触发中断处理和嵌套中断
有没有Android PCI卡?
未定义的参考-finstrument函数
运行了更多的尝试和编译后,我已经改变了mongodb版本的分支,并使用r3.3.9。
虽然使用相同的scons参数,似乎运行没有任何问题。 我还没有深入细节和版本的变化,但有一个运行版本对我来说很好
mkdir -p / tmp / mongo-build
cd / tmp / mongo-build
git clone --branch“r3.3.9”--depth 1 https://github.com/mongodb/mongo.git
cd mongo
scons --disable-warnings-as-errors --prefix = / tmp / mongo-build / mongo --js-engine = mozjs mongo mongod
如果你发出./mongo –help,二进制文件仍然可以工作,但是连接有问题处理一个不存在的数据库。 Seg Faulting,而不是在不存在的数据库上优雅地失败。 由于空指针解引用。
有问题的代码位于/src/mongo/client/mongo_uri_connect.cpp
if (!_user.empty()) { ret->auth(_makeAuthObjFromOptions(ret->getMaxWireversion())); } return ret; }
声称从3.2.8到3.3.9受到影响。
https://jira.mongodb.org/browse/SERVER-23126
在另一个说明中,如果你需要分片,在scons行中加入“core”。 对于mongod,mongos和mongo,将它们全部包含在构建中。
scons --disable-warnings-as-errors --prefix=/tmp/mongo-build/mongo --js-engine=mozjs core
解决这个问题的一个好方法就是把它指向一个现有的数据库,而不是一个示例数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。