MongoDB(0)- 原始碼編譯
轉載自部落格
雖然MongoDB官方提供了可執行的MongoDB供下載,但本著開源的工程都自己編譯一次,於是從Git上的原始碼來編譯MongoDB,官方的文件都是英文,中文文件找了幾個部落格,過程寫的都不夠全(可能是遇到的問題不一樣)。在此記錄一下本人從原始碼編譯MongoDB的全過程,希望能對有心人有幫助。
環境要求
官方文件docs/building.md中提出的要求如下
- A modern and complete C++11 compiler. One of the following is required:
- VS2015 Update 2 or newer
- GCC 5.3.0
- Clang 3.4 (or Apple XCode 5.1.1 Clang) or newer
- Python 2.7
- SCons 2.3.5 or newer (for MSVC 2015 support)
可知,在centos中需要保證的環境有:
- gcc 5.3.0
- python 2.7
- scons 2.3.5
編譯升級gcc
我這臺伺服器為CentOS-7,上面的gcc版本比較低,版本如下:
[root@localhost gcc-5.3.0]# g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
Copyright © 2015 Free Software Foundation, Inc.
本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。
我使用了一個ftp映象站下載GCC 5.3.0的原始碼壓縮包。 然後進行解壓和安裝依賴。
解壓gcc-5.3.0.tar.gz
# 在/opt/gcc-5.3.0目錄中安裝gcc
tar -xvf gcc-5.3.0.tar.gz
下載安裝依賴,下載安裝gcc需要的三個依賴
cd gcc-5.3.0/
./contrib/download_prerequisites (在解壓根目錄中執行)
注意 上一步下載依賴,需要使用wget命令、解壓bz2檔案等,確保安裝了命令具,安裝方法如下:
yum -y install bzip2
yum -y install wget
依賴下載完成後,編譯,更新gcc版本
cd ../ && mkdir gcc-build-5.3.0 && cd gcc-build-5.3.0
# configure
../gcc-5.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 編譯
make # 需要等待很久,視機器效能而定
make install
# 切換gcc到新版本
update-alternatives --install /usr/bin/gcc gcc /opt/gcc-5.3.0/gcc-5.3.0
我重新ssh登入後看到更新生效
[root@localhost ~]# g++ --version
g++ (GCC) 5.3.0
Copyright © 2015 Free Software Foundation, Inc.
本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。
安裝python、scons
檢視python版本,滿足要求,不做修改。
[root@localhost gcc-5.3.0]# python -V
Python 2.7.5
安裝scons,下載地址,下載scons-3.0.1.tar.gz版本。
# 依賴解決
yum install pcre-devel python-devel
# 解壓安裝
tar -zxvf scons-3.0.1.tar.gz && cd scons-3.0.1
python setup.py install
驗證scons安裝是否成功,輸入scons -h會顯示提示資訊。
[root@localhost gcc-5.3.0]# scons -h
usage: scons [OPTION] [TARGET] ...
SCons Options:
-b, -d, -e, -m, -S, -t, -w, --environment-overrides, --no-keep-going,
--no-print-directory, --print-directory, --stop, --touch
Ignored for compatibility.
-c, --clean, --remove Remove specified targets and dependencies.
-C DIR, --directory=DIR Change to DIR before doing anything.
--cache-debug=FILE Print CacheDir debug info to FILE.
--cache-disable, --no-cache
# 以下省略
編譯安裝MongoDB
從git上下載MongoDB原始碼
# 下載原始碼
git clone git://github.com/mongodb/mongo.git
cd mongo
# 列出所有版本
git tag -l
# 檢出 需要安裝的版本
git checkout r3.6.3
官方文件中介紹,linux下編譯需要安裝openssl-devel
On Linux, you will need to install a compiler gcc or clang, as well as glibc headers which are usually included in a package named glibc-devel.
- On Debian and Ubuntu systems, you must install the libssl-dev package to compile with SSL support.
- On Red Hat and CentOS systems, you must install the openssl-devel package to compile with SSL support.
openssl-devel安裝命令如下:
yum install openssl openssl-devel
安裝python 依賴包,通過在程式碼根目錄中執行如下命令
# 在mongoDB解壓根目錄中執行
pip install -r buildscripts/requirements.txt
編譯MongoDB原始碼並安裝
注意:本人開始編譯所有元件,等待很久以後磁碟空間不夠用,退出時編譯已佔用了12G空間以上,若需要編譯所有,請留意磁碟大小。
# 編譯所有元件,需要很大磁碟空間,注意虛擬機器磁碟大小
scons all
# 編譯核心元件 mongod, mongos, shell
scons core
# 安裝( 安裝到/opt/mongo )
scons --prefix=/opt/mongo install
# 如果需要lib庫和include標頭檔案 需要加上 –full 引數如下:
# scons –prefix=/opt/mongo –full install
備註:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的問題請參考
https://itbilu.com/linux/management/NymXRUieg.html
相關文章
- 比特幣原始碼研讀(0)bitcoin本地編譯與使用比特幣原始碼編譯
- Kubernetes原始碼編譯原始碼編譯
- Spring原始碼編譯Spring原始碼編譯
- 原始碼編譯Vim 8原始碼編譯
- XCode 編譯 PAG 原始碼XCode編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- MacOS X 編譯Android原始碼Mac編譯Android原始碼
- 原始碼編譯 apache2.4原始碼編譯Apache
- WebRTC研究 (一) 編譯原始碼Web編譯原始碼
- 原始碼編譯安裝Redis原始碼編譯Redis
- nvme driver 原始碼修改、編譯原始碼編譯
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- 龍芯原始碼編譯MySQL原始碼編譯MySql
- Swift原始碼專案編譯Swift原始碼編譯
- Dubbo原始碼之動態編譯原始碼編譯
- android 反編譯APK取原始碼。Android編譯APK原始碼
- 原始碼編譯安裝的原理原始碼編譯
- 【轉】MySQL原始碼編譯安裝MySql原始碼編譯
- openssl原始碼編譯及配置方法原始碼編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯
- 寫Java這麼久,JDK原始碼編譯過沒?編譯JDK原始碼踩坑紀實JavaJDK原始碼編譯
- Ubuntu 15.04編譯Android 6.0.1原始碼-Nexus5真機編譯Ubuntu編譯Android原始碼
- MySQL5.7.16原始碼編譯安裝MySql原始碼編譯
- 如何順利完成Kubernetes原始碼編譯?原始碼編譯
- 【Visual Leak Detector】原始碼編譯 VLD 庫原始碼編譯
- RocketMQ--原始碼編譯和介紹MQ原始碼編譯
- 阿里雲mysql原始碼編譯安裝阿里MySql原始碼編譯
- 編譯python(cpython)的原始碼及其用途編譯Python原始碼
- nginx原始碼編譯安裝(詳解)Nginx原始碼編譯
- Flink1.9.2原始碼編譯和使用原始碼編譯
- grpc-java原始碼環境編譯RPCJava原始碼編譯
- 編譯除錯Net6原始碼編譯除錯原始碼
- Android 11 原始碼下載+編譯教程Android原始碼編譯
- hive原始碼編譯(失敗記錄)Hive原始碼編譯
- PostgreSQL原始碼學習 win10原始碼編譯安裝SQL原始碼Win10編譯
- Kubernetes原始碼學習之一:下載和編譯原始碼原始碼編譯
- Spring 6 原始碼編譯和高效閱讀原始碼技巧分享Spring原始碼編譯
- Mac Android8.0原始碼編譯筆記MacAndroid原始碼編譯筆記