在这里插入代码片
linux环境配置
helloworld@Vostro:~/Downloads/automake-1.14$ uname -a
Linux Vostro 5.3.0-40-generic #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
helloworld@Vostro:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
下载 phpaxos 源码
git clone https://github.com/Tencent/phxpaxos.git --recursive
下载过程中, 可能会报这样的错, 在运行git clone命令时很容易出现这个错误,这是下载的包太大,网速慢超时报错。
git clone https://github.com/Tencent/phxpaxos.git --recursive
...
git clone error RPC failed:curl 56 GnuTLS recv error (-54):Error in the pull function
fatar: The remote end hung up unexpectedly
fatal : early EOF
fatal : index-pack failed
...
可通过更改设置解决, git config -l
查看配置
- httpBuffer加大
git config --global http.postBuffer 524288000
- 压缩配置
git config --global core.compression -1
- 修改配置文件.bashrc
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1
环境编译
依赖关系
看一下各目录的依赖关系。如下:
目录 | 编译对象 | 内部依赖 | 第三方库依赖 |
---|---|---|---|
根目录 | libphxpaxos.a | 无 | protobuf,leveldb |
plugin | libphxpaxos_plugin.a | libphxpaxos.a | glog |
sample/phxelection | 可执行程序 | libphxpaxos.a,libphxpaxos_plugin.a | 无 |
sample/phxecho | 可执行程序 | libphxpaxos.a,libphxpaxos_plugin.a | 无 |
sample/phxkv | 可执行程序 | libphxpaxos.a,libphxpaxos_plugin.a | grpc |
src/ut | 单元测试 | 无 | gtest,gmock |
注意: 如仅需使用libphxpaxos.a
进行开发,只需要编译leveldb和protobuf。而如果希望使用我们的glog打日志插件模块,或者想尝试编译sample目录,或用于phxsql使用,则还需要编译libphxpaxos_plugin.a
, 这个静态库依赖了glog。
编译 leveldb
进入third_party/leveldb目录。
下载 leveldb1.18版 https://github.com/google/leveldb/releases
make,编译完成后会在当前目录生成libleveldb.a文件。
mkdir lib建立一个lib目录,然后cd lib;ln -s ../libleveldb.a libleveldb.a建立一个软链,PhxPaxos通过lib这个目录来寻址静态库。
编译 protobuf
进入third_party/protobuf目录。
./autogen.sh
出错
helloworld@Vostro:~/Workspace/gopath/src/github.com/bingo/phxpaxos/third_party/protobuf$ ./autogen.sh
Google Mock not present. Fetching gmock-1.7.0 from the web