compile viabtc_exchange_server on Ubuntu 16.04

本文详细介绍了ViaBTC交易所源代码的编译流程,包括依赖库的安装、各组件的编译配置、数据库与Redis的设置及启动过程。此外还提供了Kafka安装与运行的相关指引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##引用##

viabtc_exchange_server,是交易所源代码。我们现在就编译一下这款产品。

sudo apt install -y libev-dev libjansson-dev libmpdec-dev libmysqlclient-dev libcurl4-gnutls-dev libldap2-dev libgss-dev librtmp-dev libsasl2-dev
# librdkafka: 0.11.3+; DO NOT INSTALL BY APT: version too old (0.8.x);
# if you do, remove them by: sudo apt remove librdkafka1 librdkafka-dev 
wget https://github.com/edenhill/librdkafka/archive/v0.11.3.tar.gz -O librdkafka-0.11.3.tar.gz
tar zxf librdkafka-0.11.3.tar.gz
cd librdkafka-0.11.3
 ./configure
make
sudo make install

COMPILATION

##引用##

 git clone https://github.com/viabtc/viabtc_exchange_server.git
 cd viabtc_exchange_server

 make -C depends/hiredis
 make -C network

//编译之前,需要执行以下 否则报错
sudo apt install libssl-dev
 
 vi utils/makefile #modify INCS
# INCS = -I ../network -I ../depends
 make -C utils

 vi accesshttp/makefile #modify INCS & LIBS
# INCS = -I ../network -I ../utils -I ../depends
# LIBS = -L ../utils -lutils -L ../network -lnetwork -L ../depends/hiredis -Wl,-Bstatic -lev -ljansson -lmpdec -lrdkafka -lz -lssl -lcrypto -lhiredis -lcurl -Wl,-Bdynamic -lm -lpthread -ldl -lssl -lldap -llber -lgss -lgnutls -lidn -lnettle -lrtmp -lsasl2 -lmysqlclient
make -C accesshttp

vi accessws/makefile
{modify INCS and LIBS like accesshttp/makefile}
make -C accessws

vi alertcenter/makefile
{modify INCS and LIBS like accesshttp/makefile}
make -C alertcenter

vi marketprice/makefile
{modify INCS and LIBS like accesshttp/makefile}
 make -C marketprice

 vi matchengine/makefile
{modify INCS and LIBS like accesshttp/makefile}
 make -C matchengine

 vi readhistory/makefile
{modify INCS and LIBS like accesshttp/makefile}
 make -C readhistory

Mysql配置
创建数据库
sql/中的3个文件请依次执行, init_trade_history.sh 里需要修改相应的数据库配置

create_trade_history.sql
create_trade_log.sql
init_trade_history.sh

Tips: 可以在mysql客户端执行sql文件, 也可以使用mysql命令,

mysql -h localhost -u root -p xxx < create_trade_history.sql

修改数据库配置

修改 matchengine/config.json中的 db_log, db_history数据库配置
修改 db_history/config.json中的db_history数据库配置

启动

  1. 安装 Redis
sudo apt-get instal redis-*

因为我们需要启动sentinel机制,所以必须安装是redis-*

启动它(必须要使用sentinel):

cd  redis目录
redis-server ./redis.conf &
redis-sentinel ./sentinel.conf &

sentinel配置办法
我们配置三个sentinel,分别是26381,26382,26383
并分别设定
建立sentinel目录:

mkdir /usr/local/redis-ms
cd /usr/local/redis-ms/
mkdir 6381
mkdir 6382
mkdir 6382

复制sentinel.conf到三台目录

cp  /etc/redis/sentinel.conf  ./26381/
cp  /etc/redis/sentinel.conf  ./26382/
cp  /etc/redis/sentinel.conf  ./26383/

分别修改三个文件夹的配置文件
26381

bind  0.0.0.0
port 26381
dir "/usr/local/redis-ms/26381"
sentinel monitor mymaster 127.0.0.1 6379 2

26382

bind  0.0.0.0
port 26382
dir "/usr/local/redis-ms/26382"
sentinel monitor mymaster 127.0.0.1 6379 2

26383

bind  0.0.0.0
port 26383
dir "/usr/local/redis-ms/26383"
sentinel monitor mymaster 127.0.0.1 6379 2

分别启动三个哨兵机制

redis-server ./redis.conf &
redis-sentinel   /usr/local/redis-ms/26381/sentinel.conf &
redis-sentinel   /usr/local/redis-ms/26382/sentinel.conf &
redis-sentinel   /usr/local/redis-ms/26383/sentinel.conf &

恭喜你,配置成功了。

创建日志文件夹

mkdir -p /var/log/trade/

启动

cd matchengine
./restart.sh

cd ../alertcenter
./restart.sh

cd ../readhistory
./restart.sh

cd ../accesshttp
./restart.sh

cd ../accessws
./restart.sh

cd ../marketprice
./restart.sh

测试

curl http://localhost:8080 -d '{"method": "market.list", "params": [], "id": 1516681174}'

kafka安装与运行

kafka还没运行呢! 但暂时不影响步骤5的接口测试. 接下来要安装kafka和运行它.
大家可以搜索下, 很多资料!!
https://blog.youkuaiyun.com/sinat_30026065/article/details/82148587

2018年5月3日整理于深圳

<think>好的,用户现在问的是如何给CMake添加配置指令DCMAKE_EXPORT_COMPILE_COMMANDS=ON。首先,我需要确定用户对这个指令的了解程度。可能他们已经知道compile_commands.json的作用,但不太清楚如何生成这个文件。 首先,我应该回顾之前关于compile_commands.json的对话。用户之前询问过这个文件的作用,所以现在的问题是具体的操作步骤。需要详细说明如何在CMake中启用这个选项。 接下来,用户可能是在使用CMake构建项目时遇到了问题,或者希望他们的IDE能够正确识别编译命令。他们可能遇到了代码补全不准确或者静态分析工具无法正常工作的情况,因此需要生成这个编译数据库文件。 我需要分步骤解释不同的方法:命令行参数、修改CMakeLists.txt,或者使用ccmake这样的交互式工具。同时,要提醒用户注意生成后的文件位置,以及不同构建目录的影响。 用户可能有不同的使用场景,比如在命令行直接构建,或者使用IDE集成CMake的情况。需要覆盖这些情况,确保无论用户如何构建项目,都能正确应用这个选项。 另外,可能需要解释为什么这个选项需要显式开启,而默认情况下CMake可能不会生成这个文件。同时,应该提到生成后的文件通常放在构建目录下,这样用户知道去哪里查找。 还要考虑可能的常见问题,例如用户是否在正确的构建目录中运行命令,或者是否在修改CMakeLists.txt后重新运行了CMake。这些细节能帮助用户避免常见的陷阱。 最后,提供一个验证步骤,让用户确认是否成功生成compile_commands.json,这样可以让他们自己检查操作是否成功,增加解决问题的信心。</think>为CMake添加 `DCMAKE_EXPORT_COMPILE_COMMANDS=ON` 配置指令主要有以下三种常用方式: --- ### 📝 方法1:命令行直接指定(推荐) 在运行cmake命令时**追加参数**: ```bash mkdir build && cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. ``` ✅ **验证生成**: ```bash ls compile_commands.json # 检查文件是否存在 ``` --- ### 📝 方法2:修改CMakeLists.txt 在项目根目录的`CMakeLists.txt`**起始位置**添加: ```cmake # 强制开启编译命令导出 set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ``` ⚠️ 注意:需删除旧的构建目录后重新生成 --- ### 📝 方法3:使用ccmake交互界面 1. 进入构建目录执行: ```bash ccmake .. ``` 2. 按`t`键展开高级选项 3. 找到`CMAKE_EXPORT_COMPILE_COMMANDS`项,按回车设置为`ON` 4. 按`c`配置,再按`g`生成 --- ### 🎯 关键注意事项 1. **构建目录隔离**:该文件会生成在`build`目录而非源码目录 2. **IDE集成**: - VSCode的Clangd插件会自动在项目根目录查找该文件 - 若构建目录不同,可创建符号链接: ```bash ln -s build/compile_commands.json . ``` 3. **动态更新**:当CMake配置变更时,需要重新生成该文件 --- ### 🌰 完整工作流示例 ```bash # 全新项目初始化 git clone https://github.com/your/project.git cd project # 创建构建目录并配置 mkdir build && cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. # 验证输出 ls -l compile_commands.json # 应显示文件详细信息 # 编译项目(可选) make -j4 ``` 通过这种方式,任何基于CMake的项目都能快速生成标准化编译数据库,显著提升开发工具链的协作效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值