⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/TiKV/build-debugging-environment-first/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

TiKV 调试环境搭建,我们根据目的拆分成两篇文章 :

  • 第一篇,本文,成功运行 TiKV 单元测试。
  • 第二篇,成功运行 TiKV 服务实例。

1. 安装环境

系统版本 :macOS Sierra 10.12.6

1.1 IntelliJ IDEA

IntelliJ IDEA 的安装大家已经非常熟悉了,笔者就不瞎比比了。

打开 IDEA 安装 Rust 插件

1.2 Rust

curl https://sh.rustup.rs -sSf | sh

  • 由于 TiKV 需要使用 nightly 版本,安装过程如下图 :

Rust 版本如下 :

Yunai-MacdeMacBook-Pro-2:~ yunai$ rustc --version
rustc 1.23.0-nightly (d6b06c63a 2017-11-09)

1.3 Go

基于 Homebrew

brew install go

Go 版本如下 :

Yunai-MacdeMacBook-Pro-2:~ yunai$ go version
go version go1.9.2 darwin/amd64

1.4 RocksDB

基于 Homebrew

打开终端,输入命令 :

brew install rocksdb

RocksDB 版本如下 :

rocksdb 5.8

1.5 C++11

基于 Homebrew

笔者暂不确定是否必须安装,建议可以先安装。

brew install brew install boost --c++11

2. 源码导入

从官方仓库 https://github.com/pingcap/tikv Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈

使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码,并导入。导入时,请记得下载 Standard library ,如下图所示 :

导入完成后,Cargo自动下载 TiKV 项目的依赖库,可能下载时间较长,请耐心等待。此时适合,关注下笔者的微信公众号:【芋道源码】。

3. 运行单元测试

打开 tests/tests.rs 文件,右键 RUN '...' 运行 #_0_ci_setup() / #_1_check_system_requirement() 函数,运行通过,说明调试环境基本搭建成功。

此时,如果出现如下错误 :

error: `std::sync::atomic::AtomicUsize::new` is not yet stable as a const fn
--> tests/coprocessor/test_select.rs:44:35
|
44 | const ID_GENERATOR: AtomicUsize = AtomicUsize::new(1);
| ^^^^^^^^^^^^^^^^^^^
|
= help: in Nightly builds, add `#![feature(const_atomic_usize_new)]` to the crate attributes to enable

error: aborting due to previous error

error: Could not compile `tikv`.
warning: build failed, waiting for other jobs to finish...
error: build failed

  • 请在 tests/tests.rs 文件,添加 #[feature(const_atomic_usize_new)] 代码。如下图所示 :

4. 彩蛋

知识星球

T T 虽然本文非常简短,但是折腾了一天左右,谁让笔者是" Rust 菜鸡 "。

开始尝试写 TiKV 源码解析系列,敬畏 + 好奇。虽然赶脚,可能会被虐成一条狗。

好啦,胖友,分享一波朋友圈可好!

文章目录
  1. 1. 1. 安装环境
    1. 1.1. 1.1 IntelliJ IDEA
    2. 1.2. 1.2 Rust
    3. 1.3. 1.3 Go
    4. 1.4. 1.4 RocksDB
    5. 1.5. 1.5 C++11
  2. 2. 2. 源码导入
  3. 3. 3. 运行单元测试
  4. 4. 4. 彩蛋