首页 > WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决

WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决

近期需要为异构引擎做准备, wiredtiger 以其优异的性能(B-tree和LSM-tree都支持)和稳定性(Mongodb的默认存储引擎) 被我们备选为异构引擎里的一个子引擎,后续将深入wiredtiger 引擎原理。这里简单记录一下Wiredtiger 存储引擎的编译记录。

Environment

CPU:Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz 56core
内存: 256G
操作系统:CentOS Linux release 7.4.1708 (Core)
文件系统:XFS
CC: gcc-5.3/bin/gcc
CXX: gcc-5.3/bin/g++
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/gcc-5.3/lib64

编译

  • 获取源码

    git clone https://github.com/wiredtiger/wiredtiger.git

    我使用的是mongodb-4.4版本的引擎:

    git checkout mongodb-4.4

  • 生成编译配置

    mkdir build

    ./configure --prefix=/home/zhg/wiredtiger/build 这里可以通过prefix指定编译后的成果物路径,需要指定绝对路径;如果这里不指定的话就会默认放在/usr/local里面。

    当然wiredtiger的configure还有更多的配置,如下,一般不需要指定:

    –enable-attach
    Configure WiredTiger to sleep and wait for a debugger to attach on failure. DO NOT configure this option in production environments.
    –enable-diagnostic
    Configure WiredTiger to perform various run-time diagnostic tests. DO NOT configure this option in production environments.
    –enable-java
    Build the WiredTiger Java API; requires SWIG and Java JDK.
    –enable-lz4
    Configure WiredTiger for LZ4 compression; see Compressors for more information.
    –enable-python
    Build the WiredTiger Python API; requires SWIG.
    –enable-snappy
    Configure WiredTiger for snappy compression; see Compressors for more information.
    –enable-zlib
    Configure WiredTiger for zlib compression; see Compressors for more information.
    –enable-zstd
    Configure WiredTiger for Zstd compression; see Compressors for more information.
    

    这一步如果执行失败,并且报出如下错误:

    ./configure: line 4619: syntax error near unexpected token `2.2.6'
    ./configure: line 4619: `LT_PREREQ(2.2.6)'
    

    说明当前系统libtool 工具版本比较低,wiredtiger通过configure安装过程中需要借用libtool生成一些后续make 需要的makefile配置文件(gcc/g++/lib64 等相关的binary和库的信息更新)。

    通过安装更高版本的libtool即可解决:

    sudo yum install libtool -y # centos7.4 默认会安装2.4.2版本
    autoreconf -i # 更新新版本libtool 生成的对应版本的conf
    
  • 编译和安装

    make -j && make install

    最后编译成功可以在build目录下看到如下内容:

    $ tree
    .
    ├── bin
    │   └── wt # wiredtiger的binary文件,类似于rocksdb的ldb命令,可以单独创建wiredtiger的db目录
    ├── include
    │   ├── wiredtiger_ext.h
    │   └── wiredtiger.h
    └── lib # wiredtiger的静态库和动态库├── libwiredtiger-10.0.0.so├── libwiredtiger.a├── libwiredtiger.la├── libwiredtiger.so -> libwiredtiger-10.0.0.so└── pkgconfig└── wiredtiger.pc
    

更多相关:

  • 前言 WiredTiger 自 mongodb3.0 集成进来之后为mongodb拉回了大量的口碑,从而在mongodb-3.2 版本直接代替了in-memory存储引擎,作为了mongodb的默认存储引擎。其 通过支持Append-only btree + lsm-tree 以及 针对磁盘/内存数据结构上的多核和无锁优化,从而拥有...

  • 用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 第一种:使用for遍历循环嵌套for x in...

  • //很长一段时间我都只使用以下方式做数组循环,具体原因看数据 var aa = for (var i = 0, l = aa.length; i < l; i++) { var a = aa[i];} 数据采集图片来源于网友 很明显,for循环第二种方式完胜!!! 至于for in、forEach什么的,不知道甩他们多少...

  • 目录 1. Scene Graph Generation with External Knowledge and Image Reconstruction 2. Knowledge Acquisition for Visual Question Answering via Iterative Querying Author...

  • 基础题1: 输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素,如果方阵a中的所有元素都沿主对角线对称,输出“Yes”, 否则,输出“No”。主对角线为从矩阵的左上角至右下角的连线,方阵a中的所有元素都沿主对角线对称指对所有i, k,a[i][k]和a[k][i]相等。输入输出示例如下: 输入: 3 1 2 3 4 5 6 7...

  • 程序流程控制 分支 顺序 循环 if switch&case 1 2 3 调整 break 1.6 前 switch(byte、short、char、int) 1.7 可放String 循环 while(次数不确定) do while for(确定次数) break(跳出本层循环) continue(跳出本次循环)     *   2...