Skip to content

中文详细编译手册

Daniel Zhang edited this page Nov 28, 2016 · 13 revisions

检查以下库是否已经安装

  • automake
  • libtool
  • curses
  • readline
  • zlib

一键编译

  1. 通过git clone或者直接下载release源码包。
  2. 直接运行PhxSQL源码根目录build.sh,即可一键完成编译(需要保证网络通畅)。

如一键编译出现问题,请参考以下的手工编译流程。

获取源码

git clone --recursive https://github.com/tencent-wechat/phxsql.git [PhxSQL放置目录]

使用--recursive参数可以同时获得所依赖的第三方库glog,leveldb,protobuf源码,也同时获得所依赖的我们自己研发的库phxpaxos,phxrpc,colib。也可自行下载这些源码,然后自行拷贝或者通过软链的形式放置到third_party目录。

自动安装所有依赖的第三方库

  1. 进入third_party目录。
  2. ./autoinstall.sh
  3. 如果安装成功会看到all done.字眼, 则可以直接跳到编译PhxSQL步骤。

如脚本执行失败,则检查编译失败在哪一个第三方库,尝试解决,如仍然无法安装成功,则按以下步骤自行安装第三方库。

编译leveldb

我们的编译流程是基于leveldb 1.19版本,如果你自行下载了其他版本,可能有编译上的不同。

  1. 进入third_party/leveldb目录。
  2. make,编译完成后会在out-static目录生成libleveldb.a文件。
  3. mkdir lib建立一个lib目录,然后cd lib;ln -s ../out-static/libleveldb.a libleveldb.a建立一个软链,PhxSQL通过lib这个目录来寻址静态库。

编译protobuf

  1. 进入third_party/protobuf目录。
  2. ./autogen.sh (这一步需要去googlecode拉取gmock源码,但已被墙,如没有vpn的筒子可自行下载gmock代码,或直接cp -r ../phxpaxos/third_party/gmock gmock,如果提示缺少autoreconfAC_PROG_LIBTOOL则需先安装automakelibtool)
  3. ./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径], 这一步CXXFLAGS--prefix都必须设置对。
  4. make && make install
  5. 编译完成后检查是否在当前目录成功生成bin,include,lib三个子目录。

编译protobuf也可以直接参考官方文档 protobuf编译方法

编译glog

  1. 进入third_party/glog目录。
  2. ./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径], 这一步CXXFLAGS--prefix都必须设置对。
  3. make && make install
  4. 编译完成检查是否在当前目录成功生成lib子目录,并检查在lib目录是否成功生成静态库libglog.a.

编译colib

  1. 进入third_party/colib目录。
  2. make
  3. 编译完成检查是否在当前目录成功生成lib子目录,并检查在lib目录是否成功生成静态库libcolib.a.

编译phxpaxos

  1. 进入third_party/phxpaxos/third_party目录。
  2. 可以看到phxpaxos也依赖了glog,leveldb,protobuf这三个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。
  3. rm -rf glog leveldb protobuf把这几个目录删掉。
  4. ln -s ../../glog glog 直接软链到刚才编译好的glog目录。
  5. ln -s ../../leveldb leveldb
  6. ln -s ../../protobuf protobuf
  7. cd ..回到phxpaxos根目录。
  8. ./autoinstall.sh
  9. make && make install.
  10. 编译完成后检查是否在当前目录成功生成lib子目录,并检查在lib目录是否成功生成静态库libphxpaxos.a.
  11. cd plugin; make && make install编译paxos plugin.
  12. 编译成功检查上层lib目录下是否成功生成静态库libphxpaxos_plugin.a.

关于独立phxpaxos的编译,可参考PhxPaxos中文详细编译手册

编译phxrpc

  1. 进入third_party/phxrpc/third_party目录。
  2. 可以看到phxrpc也依赖了protobuf这个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。
  3. rm -rf protobuf把这个目录删掉。
  4. ln -s ../../protobuf protobuf
  5. cd ..回到phxrpc根目录。
  6. make
  7. 编译完成后检查是否生成lib子目录,并检查lib目录下是否生成静态库libphxrpc.a.

关于独立phxrpc的编译,可参考PhxRPC中文详细编译手册

编译PhxSQL

  1. 下载percona源码percona-server-5.6.31-77.0.tar.gz,请注意只能使用percona-server-5.6_5.6.31-77.0版本。
  2. 解压源码到PhxSQL根目录,并更名为percona.
  3. 进入PhxSQL根目录。
  4. ./autoinstall.sh (如果提示Curses library not foundCannot find system readline libraries则需先安装这两个库再执行命令。
  5. make && make install (该步骤编译时间较长,请耐心等待)