# microsql **Repository Path**: secens/microsql ## Basic Information - **Project Name**: microsql - **Description**: No description available - **Primary Language**: C/C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-09 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # microsql #### 介绍 {**以下是 Gitee 平台说明,您可以替换此简介** Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} #### 软件架构 软件架构说明 #### 安装教程 1. 安装centos7.4操作系统。 2. 安装boost1.53.0 http://sourceforge.net/projects/boost/files/boost/1.53.0/ 3. 安装jdk1.6 https://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin?AuthParam=1625829476_b6df6447082a71457c8c8ed15dceb8e5 4. 安装bson-cpp https://gitee.com/mirrors_jbenet/bson-cpp.git 5. log4j https://downloads.apache.org/logging/log4j/1.2.17/log4j-1.2.17.tar.gz 6. clion c++的ide开发工具 #### 创建项目 [root@localhost home]cd /home/ [root@localhost home]mkdir emeralddb [root@localhost home]cd emeralddb [root@localhost emeralddb]# mkdir boost [root@localhost emeralddb]# mkdir src [root@localhost emeralddb]# touch build_boost.sh [root@localhost emeralddb]# touch build.sh [root@localhost emeralddb]# touch GNU-AGPL-3.0.txt [root@localhost emeralddb]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 9 04:36 boost -rw-r--r--. 1 root root 0 Jul 9 04:36 build_boost.sh -rw-r--r--. 1 root root 0 Jul 9 04:36 build.sh -rw-r--r--. 1 root root 0 Jul 9 04:38 GNU-AGPL-3.0.txt drwxr-xr-x. 2 root root 6 Jul 9 04:36 src [root@localhost emeralddb]# yum update //更新yum源 需要时间较长 [root@localhost emeralddb]# yum install gcc-c++ //安装g++ gcc,gdb默认系统自带,gcc版本来4.8.5 [root@localhost emeralddb]# yum install gdb [root@localhost emeralddb]# yum install autoconf [root@localhost emeralddb]# yum install libtool [root@localhost emeralddb]# yum install make [root@localhost emeralddb]# yum install x11-apps //根据需要安装是是否要界面 [root@localhost emeralddb]# yum install unzip #### 软件包 [root@localhost soft]# cd /home/soft [root@localhost soft]# ll total 138824 -rw-r--r--. 1 root root 66562166 Jul 9 04:53 boost_1_53_0.tar.gz -rw-r--r--. 1 root root 634227 Jul 9 04:53 bson-cpp.zip -rw-r--r--. 1 root root 72087592 Jul 9 04:53 jdk-6u45-linux-x64.bin -rw-r--r--. 1 root root 2864448 Jul 9 04:53 log4j-1.2.17.tar.gz [root@localhost soft]# tar -zxvf boost_1_53_0.tar.gz [root@localhost soft]# unzip bson-cpp.zip [root@localhost soft]# tar -zxvf log4j-1.2.17.tar.gz [root@localhost soft]# chmod 755 jdk-6u45-linux-x64.bin #改成可执行程序权限 [root@localhost soft]# ./jdk-6u45-linux-x64.bin #自解压 #### 把需要的软件包放到源代码目录 [root@localhost soft] cd /home/soft/boost_1_53_0 [root@localhost soft] cp -R * /home/emeralddb/boost/ #复制过去 [root@localhost soft] cd /home/emeralddb [root@localhost emeralddb]# vim build_boost.sh #编写shell编译boost #!/bin/bash machine=`uname -m|grep '64'` if [ a"$machine" == "a" ]; then bitlevel=32 else bitlevel=64 fi cd boost ./bootstrap.sh --prefix=./ ./bjam link=static threading=multi variant=release address-model=$bitlevel toolset=gcc runtime-link=static [root@localhost emeralddb]#chmod 755 build_boost.sh [root@localhost emeralddb]#./build_boost.sh #编译boost 编译比较长时间 [root@localhost emeralddb]# vim build.sh #项目的编译shell文件 #!/bin/sh cd src chmod 755 build.sh ./build.sh [root@localhost emeralddb]#cd /home/emeralddb #进源码目录 [root@localhost emeralddb]# mkdir java [root@localhost emeralddb]# cd java [root@localhost java]# mkdir jdk_linux64 [root@localhost java]# ls jdk_linux64 [root@localhost java]# [root@localhost java]# cd /home/soft/jdk1.6.0_45/ [root@localhost java]# cp -R * /home/emeralddb/java/jdk_linux64/ [root@localhost java]# cd /home/emeralddb/src #源码创建目录 [root@localhost src]# mkdir bson [root@localhost src]# mkdir client [root@localhost src]# mkdir dms [root@localhost src]# mkdir driver [root@localhost src]# mkdir include [root@localhost src]# mkdir ixm [root@localhost src]# mkdir pd [root@localhost src]# mkdir pmd [root@localhost src]# mkdir mon [root@localhost src]# mkdir msg [root@localhost src]# mkdir oss [root@localhost src]# mkdir rtn [root@localhost src]# ls bson client dms driver include ixm mon msg oss pd pmd rtn [root@localhost src]# cd /home/soft/bson-cpp [root@localhost bson-cpp]# cp -R src /home/emeralddb/src/bson [root@localhost bson-cpp]# cp -R GNU* /home/emeralddb/src/bson [root@localhost bson-cpp]# cp -R APACHE-2.0.txt /home/emeralddb/src/bson [root@localhost bson-cpp]# cp -R lib /home/emeralddb/src/bson/src [root@localhost bson-cpp]# cd /home/emeralddb/src/bson/src [root@localhost src]# vim util/time_support.h #版本有点老,需要修改其中bug 通过命令查找如下所示: inline void sleepmicros(long long s) { if ( s <= 0 ) return; boost::xtime xt; boost::xtime_get(&xt, boost::TIME_UTC); xt.sec += (int)( s / 1000000 ); xt.nsec += (int)(( s % 1000000 ) * 1000); if ( xt.nsec >= 1000000000 ) { xt.nsec -= 1000000000; xt.sec++; } boost::thread::sleep(xt); :/TIME_UTC :%s/TIME_UTC/TIME_UTC_/g #替换 :wq #保存 [root@localhost src]# cd /home/emeralddb/src/bson/src/lib [root@localhost lib]# vim base64.h 头文件加上 #include [root@localhost lib]# mv md5.c md5.cpp [root@localhost lib]# vim nonce.cpp #include "nonce.h" #include #include #include # 此处是加上的 ...... //std::cout << n; #28行此处注掉或是删除 #其中3个 std:: 是加上的 _devrandom = new std::ifstream("/dev/urandom", std::ios::binary|std::ios::in); [root@localhost lib]# cd /home/emeralddb/ [root@localhost emeralddb]# chmod 755 build.sh [root@localhost emeralddb]# cd src [root@localhost src]# cd pmd [root@localhost pmd]# vim pmdMain.cpp ##编写入口函数 #include int main ( int argc, char **argv) { printf("Hello World\n"); return 0; } [root@localhost pmd]#cd .. [root@localhost src]#cd include [root@localhost include]#ls [root@localhost include]#touch core.hpp [root@localhost include]#cd .. [root@localhost src]#cd .. [root@localhost emeralddb]#cd src [root@localhost src]#vim build.sh #!/bin/sh rm configure.in autoscan mv configure.scan configure.in cp configure.in.bak configure.in aclocal autoconf autoheader automake --add-missing ./configure CXXFLAGS= CFLAGS= make [root@localhost src]# chmod 755 build.sh ##更改权限 [root@localhost src]# autoscan [root@localhost src]# vim config.autoscan #有变动的如下 AC_INIT(emeralddb) AC_USE_SYSTEM_EXTENSIONS AM_INIT_AUTOMAKE(emeralddb,1.0) AC_CONFIG_SRCDIR([include/core.hpp]) ..... #AC_PROG_MAKE_SET #此行注掉或删除 ... AC_OUTPUT(Makefile) #添加(Makefile) :wq [root@localhost src]# cp configure.scan configure.in.bak //备份一下 [root@localhost src]# mv configure.scan configure.in [root@localhost src]# ll total 12 -rw-r--r--. 1 root root 0 Jul 9 08:57 autoscan.log drwxr-xr-x. 3 root root 63 Jul 9 08:22 bson -rwxr-xr-x. 1 root root 185 Jul 9 08:55 build.sh drwxr-xr-x. 2 root root 6 Jul 9 08:12 client -rw-r--r--. 1 root root 714 Jul 9 09:05 configure.in -rw-r--r--. 1 root root 714 Jul 9 09:05 configure.in.bak drwxr-xr-x. 2 root root 6 Jul 9 08:12 dms drwxr-xr-x. 2 root root 6 Jul 9 08:14 driver drwxr-xr-x. 2 root root 22 Jul 9 08:51 include drwxr-xr-x. 2 root root 6 Jul 9 08:14 ixm drwxr-xr-x. 2 root root 6 Jul 9 08:15 mon drwxr-xr-x. 2 root root 6 Jul 9 08:14 msg drwxr-xr-x. 2 root root 6 Jul 9 08:15 oss drwxr-xr-x. 2 root root 6 Jul 9 08:16 pd drwxr-xr-x. 2 root root 25 Jul 9 08:49 pmd drwxr-xr-x. 2 root root 6 Jul 9 08:14 rtn [root@localhost src]# aclocal #如有告警不用理会 aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in' [root@localhost src]# autoconf [root@localhost src]# ls #会生成configure的脚本 aclocal.m4 autoscan.log build.sh configure configure.in.bak driver ixm msg pd rtn autom4te.cache bson client configure.in dms include mon oss pmd [root@localhost src]# autoheader [root@localhost src]# ls config.h.in #会多生成一个这样的文件 [root@localhost src]# vim Makefile.am #生成一个Makefile.am AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=emeralddb emeralddb_SOURCES=\ pmd/pmdMain.cpp \ bson/src/bsonobj.cpp bson/src/util/json.cpp bson/src/oid.cpp \ bson/src/lib/base64.cpp bson/src/lib/md5.cpp bson/src/lib/nonce.cpp emeralddb_CXXFLAGS=-I../boost -Ibson/src -Iinclude -D_FILE_OFFSET_BITS=64 -ggdb -Wall -O0 emeralddb_LDADD=-lpthread -lm -lboost_system -lboost_thread -lboost_program_options -lrt emeralddb_LDFLAGS=-fPIC -rdynamic -L../boost/stage/lib -pthread :wq [root@localhost src]#automake --add-missing [root@localhost src]#./configure CXXFLAGS= CFLAGS= [root@localhost src]# make [root@localhost src]# ./emeralddb #成功的话,会生成这个可执行程序 Hello World [root@localhost src]# [root@localhost src]#cd /home/emeralddb/src/driver/ [root@localhost driver]#mkdir java [root@localhost driver]#cd java [root@localhost java]#mkdir src [root@localhost java]#mkdir lib [root@localhost java]#cp /home/soft/apache-log4j-1.2.17/log4j-1.2.17.jar /home/emeralddb/src/driver/java/lib [root@localhost src]#vim Makefile.am #以后需要添加cpp源代码,只要在此处添加上去即可 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)