首页 > 技术文章 > 安装 primecoin 矿池

sinsenliu 2018-08-06 14:01 原文

壹、安装 boost_1_49_0。

 

一、官网下载:https://www.boost.org/users/download/

       前期准备:boost中,用到了别的函数库,所以为了使用boost中相应的功能,需要先安装系统中可能缺失的库 

      apt-get install mpi-default-dev     #安装mpi库

      apt-get install libicu-dev       #支持正则表达式的UNICODE字符集 

      apt-get install python-dev      #需要python的话

      apt-get install libbz2-dev       #如果编译出现错误:bzlib.h: No such file or directory

     

 

二、解压:tar -xzvf boost_1_49_0

 

三、到解压目录下:cd boost_1_49_0

 

四、运行脚本:./bootstrap.sh –-prefix=/servers/boost --with-libraries=all  

 

小提示:
1、实践发现ubuntu16.04和boost1.49怎么都无法成功指定安装目录,需要自己先手动创建/servers/boost这个目录。
2、注意/servers/boost下面还有include/boost这一层,后面安装WT读取boost位置的时候要写这个直接的目录/servers/boost/include/boost (√),而不 (×)
3、如果不带–prefix参数的话(推荐),默认路径是 /usr/local/include/usr/local/lib,分别存放头文件和各种库。

 

五、编译:./b2 install --prefix=/servers/boost 

 

六、卸载

将/usr/local/lib和/usr/local/include/boost两个目录下的文件直接删除就可以。

 

七、测试安装是否正确

1、新建cpp文件:vim boot.cpp 

2、输入以下内容:

#include <string>
#include <iostream>
#include <boost/version.hpp>
#include <boost/timer.hpp>
using namespace std;
int main()
{
boost::timer t;
cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl;
cout << "min timespan: " << t.elapsed_min() << "s" << endl;
cout << "now time elapsed: " << t.elapsed() << "s" << endl;
cout << "boost version" << BOOST_VERSION <<endl;
cout << "boost lib version" << BOOST_LIB_VERSION <<endl;
return 0;
}

 

3、编译:

root@ubuntu:/opt# g++ boot.cpp -o boot
root@ubuntu:/opt# ./boot

4、成功编译之后会显示结果,最后两行打印boost版本

 

小提示:boost_1_49_0这个版本在ubuntu16.04上安装后会出现这个看起来像报错的界面,但是不要理它,查了半天也没啥用,还以为是g++要重装。先用以上方式检测,若成功则OK也!

 

 

贰、安装openssl。

一、卸载自带openssl
  sudo apt-get remove openssl

二、解压文件
       tar -xzf openssl-1.0.2k.tar.gz
三、配置
       sudo ./config shared --prefix=/opt/openssl --openssldir=/usr/lib/openssl
  shared 表示生成动态库

       prefix 表示安装目录

  openssldir 表示配置文件目录,ubuntu默认是/usr/lib/openssl,若设置其他目录,执行openssl命令时会有警告.

三、编译
       make
四、安装
       sudo make install

五、设置环境变量
       sudo gedit ~/.bashrc
       在最后一行添加export PATH=$PATH:/opt/openssl/bin 保存退出,使用source ~/.bashrc使其立即生效。

六、创建符号链接(第一个必须做,不然sudo openssl执行失败)

       ln -s /opt/openssl/bin/openssl /usr/bin/openssl
       ln -s /usr/local/ssl/openinclude/openssl /usr/include/openssl

 

七、刷新动态库配置(实验不做也可以)

       #vim /etc/ld.so.conf

八、在文件末尾加入
       /usr/local/ssl/lib

九、测试(如果你没有创建符号链接,下面的命令要带上具体的路径)
       openssl version -a

 

 

 

 

叁、安装postgresql 

一、下载postgresql9.1版本的源码,http://www.postgresql.org/docs/9.1/static/install-short.html

二、解压缩,然后切换到解压缩后的文件夹下

三、运行命令:./configure

       此处可能会出现如下错误:

  configure: error: readline library not found

        解决办法是:安装libreadline6-dev

        sudo apt-get install libreadline6-dev

        问题得到解决

四、运行命令:

       make 

       make install

五、验证安装是否成功,输入命令:

      ls -l /servers/postgresql-9.6.9   (后面我换了安装目录)

      如果 bin include lib 和 share都出现,说明安装成功,

 

六、设置用户账户

       adduser postgres

       passwd postgres

       输入密码

 

 七、创建postgresql 数据目录:

         mkdir /servers/postgresql-9.6.9/data

         chown postgres:postgres /servers/postgresql-9.6.9/data/

         ls -ld /servers/postgresql-9.6.9/data/

         会出现如下界面:

 

八、初始化postgresql数据目录

       su postgres

     /servers/postgresql-9.6.9/bin/initdb -D /servers/postgresql-9.6.9/data/

 

 

九、验证postgresql数据目录

       ls -l /servers/postgresql-9.6.9/data

      出现如下界面:

 

十、启动pgsql数据库

       /servers/postgresql-9.6.9/bin/postmaster -D /servers/postgresql-9.6.9/data >logfile 2>&1 &

       cat logfile

出现如下界面:

 

执行/servers/postgresql-9.6.9/bin/postmaster -D /servers/postgresql-9.6.9/data >logfile 2>&1 &  中间遇到报错“没有权限”:

解决办法:在/servers/postgresql-9.6.9/data下用“touch”命令创建一个logfile文件,不是用mkdir否则报错这个是目录文件。

 

 

十一、创建postgresql 数据库,并验证安装是否成功

/servers/postgresql-9.6.9/bin/createdb test
/servers/postgresql-9.6.9/bin/psql test

要是出现如下界面,则恭喜你,安装成功

 

 

 

 

肆、安装WT

cmake -DBOOST_PREFIX=/servers/boost -DENABLE_POSTGRES=on -DPOSTGRES_PREFIX=/servers/postgresql-9.6.9 .

 

-BOOST_PREFIX=      #这个是WT cmake 找到boost安装目录的参数,也是看了半天报错才发现的。

make 或 make -j4        #4线程编译,快一点。

make install

 

 

 

后面的操作:

修改

sudo apt-get install libdb++-dev

 

vi makefile.unix

DEFS=-I/opt/boost_1_49_0/include/ -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/usr/local/ssl/include/

LIBS =-L/servers/postgresql/lib/ -L/usr/local/ssl/lib/ $(addprefix -L,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH))

 

 

make -f makefile.unix

 

root@iZbp17avth0ymplocugrb4Z:/servers/postgresql# su - postgres

$ ./psql

psql (9.6.9)

Type "help" for help.

 

postgres=# CREATE USER backend WITH PASSWORD 'XYZPASS';

CREATE ROLE

 

 

std::ostringstream ss;

ss << "host=" << GetArg("-dbhost", "localhost");

ss << " port=" << GetArg("-dbport", 5432);

ss << " dbname=" << GetArg("-dbname", "testdb8");

ss << " user=" << GetArg("-dbuser", "backend");

ss << " password=" << GetArg("-dbpass", "XYZPASS");

dbconn = ss.str();

 

 

 

 

 

 

 

 

 

(小插曲)安装g++

安装依赖库及相关软件
$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
这个需要根据http://gcc.gnu.org/install/prerequisites.html里面的要求下载依赖库。

安装GCC必备的几个东西:

1.gcc5.4.0的源代码压缩包,下载地址:

镜像站点:https://gcc.gnu.org/mirrors.html

速度挺不错的:ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/

2.四个压缩包:

m4:http://www.gnu.org/software/m4/m4.html

gmp:https://gmplib.org/

mpfr:http://www.mpfr.org/

mpc:http://www.multiprecision.org/

 

上面五个包不能随意安装,需要按照m4-->gmp-->mpfr--->mpc-->gcc的顺序来安装

 

 

 

 

安装流程:#后面是注释

1.下载安装m4

gunzip m4-1.4.16.tar.gz

tar -xvf m4-1.4.16.tar

cd m4-1.4.16/

./configure

make

sudo make install

遇到报错:

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
解决方案:
build/host-m4-1.4.16/lib$ sed -i -e '/gets is a security/d' ./stdio.in.h
将“_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");”一行删除,即可编译通过

 

2.下载安装gmp-6.1.2

tar -Jxvf gmp-6.1.2.tar.xz

mkdir temp #在与gmp-6.1.2同级别的目录下建一个新文件夹,叫temp(自己命名)

cd temp

../configure –prefix=/usr/local/gmp-6.1.2 ------------#这句是说,安装路径是/usr/local/,名字叫gmp-6.1.2;

make

sudo make install

#安装好后,可以查看/usr/local/gmp-6.1.2目录下有三个文件夹

 

3.下载安装mpfr-4.0.1

tar -zxf mpfr-4.0.1.tar.gz

mkdir temp

cd temp

../configure --prefix=/usr/local/mpfr-4.0.1 --with-gmp=/usr/local/gmp-6.1.2   # prefix是安装路径,with是依赖的gmp库

make

sudo make install

 

4.下载安装mpc-1.0.3

tar -zxvf mpc-1.0.3.tar.gz

cd temp

#同样先清空temp文件夹


../configure --prefix=/usr/local/mpc-1.1.0 -with-gmp=/usr/local/gmp-6.1.2 -with-mpfr=/usr/local/mpfr-4.0.1

make

sudo make install

 

5.安装gcc5.4.0

tar -zxvf gcc-5.4.0.tar.gz

#再次清空temp首先配置GCC,在temp文件夹中执行以下命令,注意,此时temp和gcc-5.4.0在同级目录下

..configure --prefix=/usr/local/gcc-5.4 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.1 --with-mpc=/usr/local/mpc-1.1.0

make

sudo make install

#在配置时,对于语言language=选项,可以根据自己需要的编译器选择语言。 ,java,obc都可以加进去

#至此GCC5.4安装完毕。

 

配置环境变量

此时系统中存在两个版本的gcc,一个是/usr/bin/gcc , 另一个是/usr/local/gcc-5.4/ 如不修改环境变量,在每次调用5.4版本的gcc时都需要指定路径。为了方便使用,可以在/usr/bin目录下做一个符号链接

sudo ln -s /usr/local/gcc-5.4/bin/gcc /usr/local/bin/gcc54

sudo ln -s /usr/local/gcc-5.4/bin/g++ /usr/local/bin/g++54

这样就可以使用gcc54,g++54来调用程序了,旧版本的gcc,g++仍然可以适用。
对于库路径同样需要设置下,这样,保证在调用库函数的时候可以适用到新版编译器的库函数,在etc/profile文件中适用root权限添加如下代码

export LD_LIBRARY_PATH=/usr/local/gcc-5.4/lib:/usr/local/gcc-5.4/lib64:$LD_LIBRARY_PATH

注销重新登录,使变量生效

至此,gcc5.4安装完毕,解决了上述C++11的支持问题。

 

推荐阅读