壹、安装 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的支持问题。