-
Notifications
You must be signed in to change notification settings - Fork 557
中文详细编译手册
Daniel Zhang edited this page Nov 28, 2016
·
13 revisions
- automake
- libtool
- curses
- readline
- zlib
- 通过
git clone
或者直接下载release源码包。 - 直接运行PhxSQL源码根目录
build.sh
,即可一键完成编译(需要保证网络通畅)。
如一键编译出现问题,请参考以下的手工编译流程。
git clone --recursive https://github.com/tencent-wechat/phxsql.git [PhxSQL放置目录]
使用
--recursive
参数可以同时获得所依赖的第三方库glog
,leveldb
,protobuf
源码,也同时获得所依赖的我们自己研发的库phxpaxos
,phxrpc
,colib
。也可自行下载这些源码,然后自行拷贝或者通过软链的形式放置到third_party目录。
- 进入
third_party
目录。 ./autoinstall.sh
- 如果安装成功会看到
all done.
字眼, 则可以直接跳到编译PhxSQL步骤。
如脚本执行失败,则检查编译失败在哪一个第三方库,尝试解决,如仍然无法安装成功,则按以下步骤自行安装第三方库。
我们的编译流程是基于leveldb 1.19版本,如果你自行下载了其他版本,可能有编译上的不同。
- 进入
third_party/leveldb
目录。 -
make
,编译完成后会在out-static
目录生成libleveldb.a
文件。 -
mkdir lib
建立一个lib目录,然后cd lib;ln -s ../out-static/libleveldb.a libleveldb.a
建立一个软链,PhxSQL通过lib这个目录来寻址静态库。
- 进入
third_party/protobuf
目录。 -
./autogen.sh
(这一步需要去googlecode拉取gmock源码,但已被墙,如没有vpn的筒子可自行下载gmock代码,或直接cp -r ../phxpaxos/third_party/gmock gmock
,如果提示缺少autoreconf
和AC_PROG_LIBTOOL
则需先安装automake
和libtool
) -
./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径]
, 这一步CXXFLAGS
和--prefix
都必须设置对。 make && make install
- 编译完成后检查是否在当前目录成功生成
bin
,include
,lib
三个子目录。
编译protobuf也可以直接参考官方文档 protobuf编译方法
- 进入
third_party/glog
目录。 -
./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径]
, 这一步CXXFLAGS
和--prefix
都必须设置对。 make && make install
- 编译完成检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libglog.a
.
- 进入
third_party/colib
目录。 make
- 编译完成检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libcolib.a
.
- 进入
third_party/phxpaxos/third_party
目录。 - 可以看到phxpaxos也依赖了
glog
,leveldb
,protobuf
这三个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。 -
rm -rf glog leveldb protobuf
把这几个目录删掉。 -
ln -s ../../glog glog
直接软链到刚才编译好的glog目录。 ln -s ../../leveldb leveldb
ln -s ../../protobuf protobuf
-
cd ..
回到phxpaxos根目录。 ./autoinstall.sh
-
make && make install
. - 编译完成后检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libphxpaxos.a
. -
cd plugin; make && make install
编译paxos plugin. - 编译成功检查上层
lib
目录下是否成功生成静态库libphxpaxos_plugin.a
.
关于独立phxpaxos的编译,可参考PhxPaxos中文详细编译手册
- 进入
third_party/phxrpc/third_party
目录。 - 可以看到phxrpc也依赖了
protobuf
这个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。 -
rm -rf protobuf
把这个目录删掉。 ln -s ../../protobuf protobuf
-
cd ..
回到phxrpc根目录。 make
- 编译完成后检查是否生成
lib
子目录,并检查lib
目录下是否生成静态库libphxrpc.a
.
关于独立phxrpc的编译,可参考PhxRPC中文详细编译手册
- 下载
percona
源码percona-server-5.6.31-77.0.tar.gz,请注意只能使用percona-server-5.6_5.6.31-77.0版本。 - 解压源码到PhxSQL根目录,并更名为
percona
. - 进入PhxSQL根目录。
-
./autoinstall.sh
(如果提示Curses library not found
和Cannot find system readline libraries
则需先安装这两个库再执行命令。 -
make && make install
(该步骤编译时间较长,请耐心等待)