编译leveldb-1.20
    编译leveldbjni-all-1.8.jar之前,需要先将snappy和leveldb编译成静态库,再将两个静态库编译进leveldbjni.so里,最后生成leveldbjni-all-1.8.jar压缩包。
    从github下载源码。
    wget https://github.com/google/leveldb/archive/v1.20.tar.gz
    解压源码包。
    tar -zxvf v1.20.tar.gz
    进入解压后目录。
    cd leveldb-1.20
    修改文件build_detect_platform,按照下图修改250至252行,其中第250-251行是修改原行内容,而第252行是新增行。
    vim build_detect_platform
    echo “PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS $PLATFORM_SHARED_CFLAGS” >> $OUTPUT echo “PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS $PLATFORM_SHARED_CFLAGS” >> $OUTPUT echo “PLATFORM_SHARED_CFLAGS=” >> $OUTPUT
    image.jpeg
    手动合入leveldb.so源码的patch,具体patch参考github提交
    Patch的提交页面只显示了一个提交,本次提交的前一个代码提交中还有一个patch需要合入。
    在“db/db_impl.cc”文件中,增加127至131行和1479至1511行。
    image.jpeg

    image.jpeg
    在“db/db_impl.h”文件中,增加45至48行和141至148行
    image.jpeg

    image.jpeg
    在“db/db_test.cc”文件中,增加1870至1873行
    image.jpeg
    在“include/leveldb/db.h”文件中,增加144至147行。
    image.jpeg
    执行编译
    make -j20
    编译完成后,将在“out-shared”目录下生成动态库libleveldb.so等,在out-static目录下生成libleveldb.a静态库和其它二进制文件。将out-static目录下的静态库拷贝到当前目录,并设置LEVELDB_HOME。
    export LEVELDB_HOME=pwd
    cp out-static/libleveldb.a ./
    将静态库拷贝到对应目录,是为了后续将静态库编译进leveldbjni.so做准备。