[raspberry pi3] aarch64 mongodb 编译和安装

raspberry pi3官方支持是32bit的系统,使用mongodb的时候有2G数据库大小的限制,32bit的系统上数据大点基本上就可以认为不能用了,所以要装64bit的opensuse。

安装了suse之后,发现没有mongodb的程序,于是安装了Factory_ARM database的rpm源, 但是发现这个源里面mongod是不能用的,原因是里面没有aarch64的配置,导致了没有可以用的store engine,会告诉你找不到wiredtiger或者mmapv1的engine,应为aarch64的默认编译是不配store engine的,我们需要自己配置了编译一个。

糟糕的事情是用虚拟机发现安装了个opensuse之后,装了默认的cross-aarh64-gcc 后,用了下这个toolchain,发现竟然只有gcc ,但是却没有glibc,真的不知道该说啥好了,不知道是我做的不对呢,还是opensuse的社区比较奇葩,好歹suse也是商业版的啊,缺的东西也太多了,就只能搞个第三方的toolchain用用了。

最后选定了linaro的toolchain

下载地址:

https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz

由于opensuse的glibc的版本是 2.22 而linaro的glibc版本没有出现2.22的,于是就选择了这个2.21的版本的。

解压:

tar xvf gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz

toolchain好了后就要下载代码了

mongodb的代码下载:

git clone https://github.com/mongodb/mongo.git

由于想要做个rpm 包,so做下src package,这里选用比较新的版本3.4.2

git archive --format tar.gz --prefix mongodb-org-3.4.2/ --output ~/rpmbuild/SOURCES/mongodb-org-3.4.2.tar.gz  r3.4.2

默认的mongo下的代码是通过网上下载binary packge做rpm的,但是我们要的是从soure开始,需要修改下rpm下的mongodb-org.spec 文件

主要修改的内容是

1. 添加了build的命令,里面配置了aarch64的编译方法,把wiredtiger和mmapv1的store engine都开了, -j job数根据自己的配置调整

2. 修改了install的路径,并对结果进行了strip(默认的scons的strip没找到,不知道咋搞)

3. 删除了一些没有的tools

patch 如下:

diff --git a/rpm/mongodb-org.spec b/rpm/mongodb-org.spec
index 66ff4ca..c548e79 100644
--- a/rpm/mongodb-org.spec
+++ b/rpm/mongodb-org.spec
@@ -164,10 +164,18 @@ This package provides the MongoDB static library and header files needed to deve
 %setup

 %build
+TOOLCHAIN=toolchain路径
+scons --release --dbg=off MONGO_VERSION=3.4.2 CC=$TOOLCHAIN/aarch64-linux-gnu-gcc  CXX=$TOOLCHAIN/aarch64-linux-gnu-g++ TARGET_ARCH=aarch64 --mmapv1=on --wiredtiger=on --disable-warnings-as-errors -j6 CF
LAGS="-march=armv8-a+crc -mtune=generic" core tools VERBOSE=on

 %install
-mkdir -p $RPM_BUILD_ROOT/usr
-cp -rv bin $RPM_BUILD_ROOT/usr
+TOOLCHAIN=toolchain路径
+scons --release --dbg=off MONGO_VERSION=3.4.2 CC=$TOOLCHAIN/aarch64-linux-gnu-gcc  CXX=$TOOLCHAIN/aarch64-linux-gnu-g++ TARGET_ARCH=aarch64 --mmapv1=on --wiredtiger=on --disable-warnings-as-errors -j6 CFLAGS="-march=armv8-a+crc -mtune=generic" install
+$TOOLCHAIN/aarch64-linux-gnu-strip build/install/bin/mongod
+$TOOLCHAIN/aarch64-linux-gnu-strip build/install/bin/mongo
+$TOOLCHAIN/aarch64-linux-gnu-strip build/install/bin/mongos
+$TOOLCHAIN/aarch64-linux-gnu-strip build/install/bin/mongoperf
+mkdir -p $RPM_BUILD_ROOT/usr/bin
+cp -rv build/install/bin $RPM_BUILD_ROOT/usr/
 mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1
 cp debian/*.1 $RPM_BUILD_ROOT/usr/share/man/man1/
 # FIXME: remove this rm when mongosniff is back in the package
@@ -222,10 +230,8 @@ fi
 %attr(0755,mongod,mongod) %dir /var/log/mongodb
 %attr(0755,mongod,mongod) %dir /var/run/mongodb
 %attr(0640,mongod,mongod) %config(noreplace) %verify(not md5 size mtime) /var/log/mongodb/mongod.log
-%doc GNU-AGPL-3.0
+%doc GNU-AGPL-3.0.txt
 %doc README
-%doc THIRD-PARTY-NOTICES
-%doc MPL-2

@@ -243,16 +249,7 @@ fi
 %defattr(-,root,root,-)
 #%doc README GNU-AGPL-3.0.txt

-%{_bindir}/bsondump
-%{_bindir}/mongodump
-%{_bindir}/mongoexport
-%{_bindir}/mongofiles
-%{_bindir}/mongoimport
-%{_bindir}/mongooplog
 %{_bindir}/mongoperf
-%{_bindir}/mongorestore
-%{_bindir}/mongotop
-%{_bindir}/mongostat

 %{_mandir}/man1/bsondump.1*
 %{_mandir}/man1/mongodump.1*

接下来编译代码就行了

rpmbuild  -ba --target=aarch64  -D"dynamic_version r3.4.2" -D "dynamic_release r3.4.2"  -D "_arch aarch64" rpm/mongodb-org.spec

PS.

因为mongodb用了不少的模版,编译的时候需要相当多的内存,要有心理准备:P

编译完成后,rpm包就可以直接用来安装了

时间: 2024-12-23 02:31:20

[raspberry pi3] aarch64 mongodb 编译和安装的相关文章

[raspberry pi3] hadoop 编译搭建和配置

Causion: 只有一个raspberry pi3的就随便玩玩吧,瓶颈不在在cpu, 1 G的内存实在是太少了,跑个hadoop就很辛苦了 下面是瞎折腾的过程: oracle的arm jdk的安装过程这边就直接略过了 1. 下载hadoop的源代码, 因为raspberry 虽然是 64bit的cpu但是实际上跑的是32 位系统, 没有能够直接使用的二进制,这边下载和编译下源代码, 以便提高下运行的效率,减少下需要的内存的量. 这边下载的版本是2.7.2, 下载完成之后解压 2. 安装下必要的

第一课 MongoDB 概述与安装

1.课程大纲 本次课主要介绍 MongoDB 背景知识和 MongoDB 的安装与配置,让大家对 MongoDB 有一个初认识. 其基本的知识点包含: NoSQL数据库概述 MongoDB 数据库简单介绍 Linux 下安装 MongoDB 数据库 Mac 和 Windows 下安装 MongoDB 数据库 2.课程简单介绍 MongoDB是由MongoDB.inc研发的一款NoSQL类型的文档型数据库,MonogoDB名字来源于英文单词humongous,这个单词的意思是巨大无比.暗喻Mong

GCC的编译和安装 很好的资料

http://blog.csdn.net/yrj/article/details/492404 1.GCC的编译和安装2.预处理    #define 可以支持不定数量的参数.    例子如下:    #define err(...) fprintf(stderr,__VA_ARGS__)    err("%s,%d/r/n","The error code:",48);    扩展为:    fprintf(stderr,"%s,%d/r/n"

cypthon的visual studio编译环境安装

按照教程,如果出现vcvarsall.bat找不到的情况,则需要安装正确版本的visual studio http://docs.cython.org/src/tutorial/cython_tutorial.html python 2.7.x使用的是vs2008,如果没有安装,可以安装vs2008 express版本.下图是查看vs所使用的vs编译器的版本的方法. 可以通过检查环境变量中VS90COMNTOOLS是否存在来确定vs2008 express是否安装好. 下面是配置过程: 先安装v

centos7下源码编译方式安装httpd

语法: chkconfig --list [name] chkconfig --add name chkconfig --del name chkconfig [--level levels] name <on|off|reset> chkconfig [--level levels] name 参考文章http://www.cnblogs.com/jipeng87/p/6308725.html 前言 Apache至少需要apr.apr-util.pcre组件的支持. APR(Apache p

[Linux 小技巧] Ubuntu 14.04 下编译、安装、配置最新开发版 GoldenDict

1. 背景介绍 GoldenDict 是一款非常优秀的跨平台电子词典软件,支持 StarDict.Babylon 等多种词典.其 PC 版基于 Qt 编写,完全免费.开源且没有广告.GoldenDict 的 Android 版是另外一个全新实现的系统,采用了付费版去广告.免费版显示广告的策略,这里就不详细讨论了. GoldenDict 在 GitHub 上的地址是 https://github.com/goldendict/goldendict,截至目前(2015-10-17)已经有 1872

1. 初探MongoDB —— 介绍、安装和配置

一.写在前面 之前一直以来,都是使用关系型数据库.也很早就听闻,当数据量大的时候,关系型数据库使用起来会有很多问题.诸如查询数据慢,加载花费时间长等等. 也早就耳闻NOSQL(NoSQL = Not Only SQL ),泛指非关系型数据库.这种数据库主要以哈希表的形式存储.即:这个表中有一个指定的键和一个指针指向特定的数据,key.value键值对模式.这种方式的好处就是简单,容易部署. 而在NOSQL数据库中,主要有Cassandra.Mongodb.CouchDB.Redis. Riak.

基于Appium1.6.X的WebDriverAgent编译、安装

转自:http://www.cnblogs.com/baconLiu/p/6861431.html tips:WebDriverAgent是Appium1.6.3以后版本新添加的模块,为了让appium与iPhone(基于xcuitest)设备进行通信而添加的.但是,这个模块在是一个独立的项目,在使用前必须编译.安装.下面介绍Appium中的WebDriverAgent的编译和打包. appium-xcuitest-driver依赖(两种编译,安装方式) 方法一:基于Apple ID,编译,安装

eclipse反编译插件安装

前言:在实际的开发中几乎都会使用到一些框架来辅助项目的开发工作,对于一些框架的代码我们总怀有一些好奇之心,想一探究竟,有源码当然更好了,对于有些JAR包中的代码我们就需要利用反编译工具来看一下了,下面是我常使用的一种安装JAVA反编译工具的方法,操作比较简单,不过时间长了也容易忘记,还是在此小记一笔吧!毕竟好记性不如烂笔头(插件市场中有好多好玩的,自己可以尝试玩玩看!) 1:Eclipse的版本信息 2:Help--Eclipse Marketplace 3-1:输入 Decompiler 搜索