腾讯开源项目phxpaxos的编译步骤
#paxos的一般编译流程在项目文档《中文详细编译手册》里面已经有介绍,这里重点介绍一下编译samples目录下的代码;
#我的环境是ubuntu;
#设置paxos根目录
phx_dir=~/code/tencent/phxpaxos/
#编译leveldb
cd $phx_dir/third_party/leveldb
make
mkdir lib
cd lib
ln -s ../libleveldb.a libleveldb.a
#编译protobuf
cd $phx_dir/third_party/protobuf
./autogen.sh
./configure CXXFLAGS=-fPIC --prefix=`pwd`
make && make install
#编译glog
cd $phx_dir/third_party/glog
./configure CXXFLAGS=-fPIC -prefix=`pwd`
make && make install
#有时候我们在phxpaxos代码里面改了东西,但是sample工程不能生效,
#所以我们在编译 libphxpaxos.a 和 libphxpaxos_plugin.a 的时候先删掉之前的静态库
#然后在编译 sample 代码的时候先执行一下 make clean
#编译phxpaxos静态库
cd $phx_dir
find ./ -name "libphxpaxos.a" | xargs rm
find ./ -name "libphxpaxos_plugin.a" | xargs rm
./autoinstall.sh
make debug=y && make install
ll lib/
#编译PhxPaxos Plugin静态库
cd $phx_dir/plugin
make && make install
ll ../lib
#编译gtest和gmock
cd $phx_dir/third_party
rm -rf googlemock
git clone --recursive https://github.com/google/googletest.git
cd googletest
cmake -DCMAKE_INSTALL_PREFIX=`pwd` .
make && make install
cd $phx_dir/third_party/
mkdir gmock
mv googletest/{include,lib} ./gmock
cd gmock
mv lib64 lib
#grpc依赖于openssl,请下载最新的openssl并编译安装
openssl编译步骤略
grpc依赖于openssl,如果有 libssl.a 链接错误,请下载最新的openssl并编译安装
附错误提示:
[LD] Linking third_party/grpc/libs/opt/libgrpc.so.7.0.0-dev
/usr/bin/ld: /usr/local/lib/libssl.a(t1_meth.o): relocation R_X86_64_32 against .rodata can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libssl.a: error adding symbols: Bad value
#编译grpc
cd $phx_dir/third_party/
git clone --recursive https://github.com/grpc/grpc.git
make
mkdir bin
cp -rf bins/* bin/
mkdir lib
cp -rf libs/* lib/
cp -rf libs/opt/* lib/
#把grpc的路径加到环境变量
export PATH=$phx_dir/third_party/grpc/bins/opt/:$phx_dir/third_party/grpc/bins/opt/protobuf:$PATH
which grpc_cpp_plugin
which protoc
#编译例子
cd $phx_dir/sample
make
#修改代码之后的快速重编
killall phxecho
phx_dir=~/code/tencent/phxpaxos/
cd $phx_dir
find ./ -name "libphxpaxos.a" | xargs rm
find ./ -name "libphxpaxos_plugin.a" | xargs rm
./autoinstall.sh
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
make debug=y && make install
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
ll lib/
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
cd $phx_dir/plugin
make && make install
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
ll ../lib
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
phx_dir=~/code/tencent/phxpaxos/
cd $phx_dir/sample/phxecho
make clean
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
make
if [ $? -ne 0 ]; then echo "[error]"; sleep 365d; fi
#运行例子
phx_echo_dir=~/code/tencent/phxpaxos/sample/phxecho/
cd $phx_echo_dir
mkdir -p log1/log
mkdir -p log2/log
mkdir -p log3/log
server_1=127.0.0.1:38001
server_2=127.0.0.1:38002
server_3=127.0.0.1:38003
cd $phx_echo_dir/log1 && rm -r log* && mkdir log
$phx_echo_dir/phxecho $server_1 $server_1,$server_2,$server_3
cd $phx_echo_dir/log2 && rm -r log* && mkdir log
$phx_echo_dir/phxecho $server_2 $server_1,$server_2,$server_3
cd $phx_echo_dir/log3 && rm -r log* && mkdir log
$phx_echo_dir/phxecho $server_3 $server_1,$server_2,$server_3
#可以在代码里面加点日志打印
//lijing-tets
PLImp("lijing-test, Instance :: OnTimeout, %d ", 222);
腾讯开源项目phxpaxos的编译步骤的更多相关文章
- Android二维码识别 开源项目ZXing的编译
Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ...
- 利用开源项目jadx反编译Android应用
原文转自:http://bbs.itheima.com/thread-200475-1-1.html 利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex ...
- 流媒体开发之开源项目live555---live555 server 编译 包括更改帧率大小
由于要测试8148解码器的性能,需要搭建不同帧率25fps - >30fps,宏块大小defualt 100 000 -> 200 000不同大小的h264码流,所以就需要编译改动的liv ...
- Windows下编译vpx获得各个项目VS2010解决方案的步骤
最近研究了一下几种常见的视频编码器:x264,x265,vpx.本文简单记录一下它们的编译方法. x264,x265,vpx这三个开源的视频编码器可以说是当今“最火”的视频编码器.x264现在占据着H ...
- 开源项目导入eclipse的一般步骤
开源项目导入eclipse的一般步骤 周银辉 下载到开源项目后,我们还是希望导入到eclipse中还看,这样要方便点,一般的步骤是这样的 打开源代码目录, 如果看到里面有.calsspath .pro ...
- 开源项目导入eclipse的一般步骤[转]
下载到开源项目后,我们还是希望导入到eclipse中还看,这样要方便点,一般的步骤是这样的 打开源代码目录, 如果看到里面有.calsspath .project文件,那么说明这个项目本来就是ec ...
- 使用maven编译dubbo,导入eclipse(其他maven开源项目编译类似)
dubbo github下载地址:https://github.com/alibaba/dubbo 相关文档:http://dubbo.io/ 使用maven编译dubbo,导入eclipse(其他m ...
- maven编译开源项目报enforce错解决
刚下载一个开源项目源码,用maven编译发现报错: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plu ...
- 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)
腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1. Basic Paxos 算法是为 ...
随机推荐
- 【学习】Python进行数据提取的方法总结【转载】
链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...
- c语言操作符总结
分类: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 其他操作符(下标引用.函数调用和结构成员) 一.算数操作符 1.算术操作符包括:+ ...
- Mac谷歌浏览器跨域
1.创建一个文件夹,这个文件夹是用来保存关闭安全策略后的用户信息的,名字可以随意取,位置也可以随意放,我用的是MyChromeDevUserData open -n /Applications/Goo ...
- 阿里云 RDS for MySQL 物理备份文件恢复到自建数据库
想把阿里云的Mysql 生成的RAS 文件.tar文件 恢复到本地自建mysql, 遇到的坑.希望帮助大家 阿里云提供的地址 https://help.aliyun.com/knowledge_det ...
- QT 二维图形 原理、发展及应用
转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分 ...
- docker 独立搭建linux + php 随笔
参考了 https://www.jianshu.com/p/fcd0e542a6b2 dodos大佬的一些经验 1.首先,由于nginx跟php的特性,使得二者可以单独作为独立容器存在,所以为了使h ...
- C# Excel导入数据
表 表的创建脚本 CREATE TABLE [dbo].[TB_PROJECTS_New1]( , ) NOT NULL, ) NULL, ) NULL, , ) NULL, , ) NULL, , ...
- 虚拟机JVM
虚拟机组成:类加载器,运行时数据区,执行引擎 运行时数据区:堆,栈,方法区,程序计数器,本地方法栈 堆:对象实例 栈:入栈出栈,线程的执行 栈帧:一个方法一个 栈的结构:放 局部变量表,操作数栈,动态 ...
- linux系统ssh免密钥登录配置
linux主机配置ssh免密钥登录,具体配置如下: 1.执行命令ssh-keygen -t rsa,生成公钥和私钥(具体步骤详见下图) 2.会在当前用户的家目录的.ssh/生成公钥和私钥, 3.执行s ...
- java、asp.net 通用分页码函数
<script type="text/javascript"> $(document).ready(function(){ ajaxGetPaging(1); }); ...