#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的编译步骤的更多相关文章

  1. Android二维码识别 开源项目ZXing的编译

    Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ...

  2. 利用开源项目jadx反编译Android应用

    原文转自:http://bbs.itheima.com/thread-200475-1-1.html 利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex ...

  3. 流媒体开发之开源项目live555---live555 server 编译 包括更改帧率大小

    由于要测试8148解码器的性能,需要搭建不同帧率25fps - >30fps,宏块大小defualt 100 000 -> 200 000不同大小的h264码流,所以就需要编译改动的liv ...

  4. Windows下编译vpx获得各个项目VS2010解决方案的步骤

    最近研究了一下几种常见的视频编码器:x264,x265,vpx.本文简单记录一下它们的编译方法. x264,x265,vpx这三个开源的视频编码器可以说是当今“最火”的视频编码器.x264现在占据着H ...

  5. 开源项目导入eclipse的一般步骤

    开源项目导入eclipse的一般步骤 周银辉 下载到开源项目后,我们还是希望导入到eclipse中还看,这样要方便点,一般的步骤是这样的 打开源代码目录, 如果看到里面有.calsspath .pro ...

  6. 开源项目导入eclipse的一般步骤[转]

      下载到开源项目后,我们还是希望导入到eclipse中还看,这样要方便点,一般的步骤是这样的 打开源代码目录, 如果看到里面有.calsspath .project文件,那么说明这个项目本来就是ec ...

  7. 使用maven编译dubbo,导入eclipse(其他maven开源项目编译类似)

    dubbo github下载地址:https://github.com/alibaba/dubbo 相关文档:http://dubbo.io/ 使用maven编译dubbo,导入eclipse(其他m ...

  8. maven编译开源项目报enforce错解决

    刚下载一个开源项目源码,用maven编译发现报错: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plu ...

  9. 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)

    腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1.  Basic Paxos 算法是为 ...

随机推荐

  1. 关于VS2010 在设计窗口时控件消失问题

    我特喵的,见鬼了. 几个相同的Tabpage中添加相同toolStrip控件,每次都是第二个Tabpage中的消失,但是查看设计器下面又显示控件存在,点击也会出现,运行后就没有了,真的是奇怪. 最后经 ...

  2. golang基于etcd实现分布式锁(转)

    下面描述使用 Etcd 实现分布式锁的业务流程,假设对某个共享资源设置的锁名为:/lock/mylock 步骤 1: 准备 客户端连接 Etcd,以 /lock/mylock 为前缀创建全局唯一的 k ...

  3. CSS预处器的了解

    到目前为止,在众多优秀的CSS预处理器语言中就属Sass.LESS和Stylus最优秀,讨论的也多,对比的也多. 1.Sass背景介绍 Sass是对CSS(层叠样式表)的语法的一种扩充,诞生于2007 ...

  4. 用Python手把手教你搭一个Transformer!

    来源商业新知网,原标题:百闻不如一码!手把手教你用Python搭一个Transformer 与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充 ...

  5. 判断序列B是否是序列A的连续子序列

    算法思想:因为两个整数序列已存入两个链表中,操作从两个链表的第一个结点开始,若对应得数据相等,则后移指针,若对应的数据不等,则A列表从上次开始比较结点的后继开始,B链表仍从第一个结点开始,直到B链表到 ...

  6. 基于WebGL架构的3D可视化平台—实现小车行走路线演示

    小车行走路线演示New VS Old 刚接触ThingJS的时候,写的一个小车开进小区的演示,今天又看了教程中有movePath这个方法就重新写了一遍,其中也遇到了一些问题,尤其突出的问题就是小车过弯 ...

  7. 开源虚拟化KVM(二)管理虚拟存储

    五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...

  8. tarjan求强连通分量

    http://poj.org/problem?id=3180 //#include<bits/stdc++.h> #include<iostream> #include< ...

  9. python2与python3的区别

    print 函数(Python3中print为一个函数,必须用括号括起来:Python2中print为class)在Python 2.6与Python 2.7里面,以下三种形式是等价的: print ...

  10. Java框架spring Boot学习笔记(八):@PropertySource,@Value注解

    获取配置文件 忽略配置文件不存在时报错