中文详细编译手册

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 (该步骤编译时间较长,请耐心等待)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.