TiDB学习笔记4
打算在Mac上编译TiKV,按照TiKV的文档,还缺cmake
,但安装时得到:1
Error: cmake: "cxx11" is not a recognized standard
查了下,也没有什么解决方案,最后找到这个答案,安装binary,在设置PATH
在Mac上跑了很久,也没见结束,先停了,打算换到服务器上跑
在GCP上新申请了一个账号,可以跑一个8核52G内存的VM,安装了CentOS 7.6
安装依赖
1 | sudo yum install -y git cmake go clang # awk 和 make 已经有了 |
开始直接yum install了rust,之后有问题,只能删除1
sudo yum -y remove rust
按照官网操作步骤
1 | git clone https://github.com/tikv/tikv.git |
make build 失败1
2CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.1 or higher is required. You are running version 2.8.12.2
切换到cmake31
2
3
4sudo yum -y remove cmake
sudo yum -y install cmake3
mkdir ~/bin
ln -s /usr/bin/cmake3 ~/bin/cmake
make build继续失败1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17running: "cmake" "/home/ykg/.cargo/registry/src/github.com-1ecc6299db9ec823/grpcio-sys-0.4.2/grpc" "-DgRPC_INSTALL=false" "-DgRPC_BUILD_CSHARP_EXT=false" "-DgRPC_BUILD_CODEGEN=false" "-DCMAKE_INSTALL_PREFIX=/home/ykg/tikv/tikv/target/debug/build/grpcio-sys-b03572028937c5a0/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=c++" "-DCMAKE_BUILD_TYPE=Debug"
-- The CXX compiler identification is unknown
-- Configuring incomplete, errors occurred!
See also "/home/ykg/tikv/tikv/target/debug/build/grpcio-sys-b03572028937c5a0/out/build/CMakeFiles/CMakeOutput.log".
See also "/home/ykg/tikv/tikv/target/debug/build/grpcio-sys-b03572028937c5a0/out/build/CMakeFiles/CMakeError.log".
--- stderr
CMake Error at CMakeLists.txt:31 (project):
The CMAKE_CXX_COMPILER:
c++
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
没有c++
,尝试1
CXX=/usr/bin/clang++ make build
得到1
2
3
4
5
6CMake Error at /usr/share/cmake3/Modules/CMakeTestCXXCompiler.cmake:45 (message):
The C++ compiler
"/usr/bin/clang++"
is not able to compile a simple test program.
最后不得不安装g++1
2
3
4yum install gcc-c++ libstdc++-devel
which c++
# /usr/bin/c++
make build
新错误1
Could NOT find zlib (missing: ZLIB_LIBRARIES)
1 | sudo yum -y install zlib-devel |
14:33 编译完成
1 | cargo install cargo-watch |
新开窗口1
make dev
结果得到raftstore::store::util::tests::test_lease
测试失败,看到这个PR还在Open状态,说是时钟相关,在VMs中有问题
但执行单个test没事,全部通过1
cargo test raftstore::store::util::tests::test_lease
继续1
make release
得到1
2
3
4
5
6
7
8
9
10bash scripts/check-sse4_2.sh
checking bins for sse4.2
checking binary ./target/release/tikv-server for sse4.2
_ZN7rocksdb6crc32c10ExtendImplIXadL_ZNS0_L10Fast_CRC32EPmPPKhEEEEjjPKcm
error: ./target/release/tikv-server does not enable sse4.2
checking binary ./target/release/tikv-importer for sse4.2
_ZN7rocksdb6crc32c10ExtendImplIXadL_ZNS0_L10Fast_CRC32EPmPPKhEEEEjjPKcm
error: ./target/release/tikv-importer does not enable sse4.2
some binaries do not enable sse4.2
fix this by building tikv with ROCKSDB_SYS_SSE=1
看到TiKV的github也有类似Issue,但没有用,自己读了script,猜测是没有gdb,检查果然1
2gdb -batch -ex "disass/r _ZN7rocksdb6crc32c10ExtendImplIXadL_ZNS0_L10Fast_CRC32EPmPPKhEEEEjjPKcm" ./target/release/tikv-server
-bash: gdb: command not found
安装gdb1
sudo yum -y install gdb
scripts/check-sse4_2.sh执行通过,着手创建PR,再次阅读相关Issue和PR,发现原来已经说了是gdb
问题。花了点时间整理提交了PR,感觉精力耗尽。