ClickHouse系列教程六:源码分析之Debug编译运行
ClickHouse系列教程: ClickHouse系列教程
根据官方文档的编译教程:How to Build ClickHouse on Linux - ClickHouse Documentation
我们需要先安装软件,建议使用Ubuntu/Debian系统:
apt-get install libicu-dev libreadline-dev gperf git cmake ninja-build
apt install gcc-8 g++-8 #编译需要gcc版本大于7或者clang版本大于6
apt install clang-6 clang++-6
然后 clone source code:
git clone --recursive --branch stable https://github.com/yandex/ClickHouse.git
cd ClickHouse
如果上一步的依赖模块没有全部 clone 下来,运行命令:
git submodule update --init --recursive
普通的编译安装运行如下命令:
mkdir build && cd build
cmake .. -DCMAKE_CXX_COMPILER=`which g++` -DCMAKE_C_COMPILER=`which gcc`
ninja
这里强调一下,cmake不像make一样可以clean,你需要手动删除文件,然后重新编译
如果为了研究,推荐使用debug模式:
mkdir Debug && cd Debug
cmake .. -DCMAKE_CXX_COMPILER=`which g++-8` -DCMAKE_C_COMPILER=`which gcc-8` -DCMAKE_BUILD_TYPE=Debug
ninja -j 1
你也可以使用clang进行编译, clang版本至少要6.0:
mkdir Debug && cd Debug
cmake .. -DCMAKE_CXX_COMPILER=`which clang++` -DCMAKE_C_COMPILER=`which clang` -DCMAKE_BUILD_TYPE=Debug
ninja -j 1
在我的机器上消耗3G内存。
注意:4线程同时编译需要至少12G内存,推荐1线程或双线程
编译完成后可以运行了:
sudo ./dbms/programs/clickhouse-server --config=/etc/clickhouse-server/config.xml
参考文章:Clickhouse源码研究(一)
ClickHouse 源码阅读经验分享
ClickHouse系列教程六:源码分析之Debug编译运行相关推荐
- SequoiaDB 系列之六 :源码分析之coord节点
好久不见. 在上一篇SequoiaDB 系列之五 :源码分析之main函数,有讲述进程开始运行时,会根据自身的角色,来初始化不同的CB(控制块,control block). 在之前的一篇Sequ ...
- LIRE教程之源码分析 | LIRE Tutorial of Analysis of the Source Code
LIRE教程之源码分析 |LIRE Tutorial of Analysis of the Source Code 最近在做地理图像识别和检索的研究,发现了一个很好用的框架LIRE,遂研究了一通.网上 ...
- paho架构_MQTT系列最终章-Paho源码分析(三)-心跳与重连机制
写在前面 通过之前MQTT系列-Eclipse.Paho源码分析(二)-消息的发送与接收的介绍,相信仔细阅读过的小伙伴已经对Eclipse.Paho内部发送和订阅消息的流程有了一个较为清晰的认识,今天 ...
- 【投屏】Scrcpy源码分析一(编译篇)
Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...
- v58.03 鸿蒙内核源码分析(环境脚本) | 编译鸿蒙原来很简单 | 百篇博客分析HarmonyOS源码
颜渊问仁.子曰:"克己复礼为仁.一日克己复礼,天下归仁焉.为仁由己,而由人乎哉?"颜渊曰:"请问其目."子曰:"非礼勿视,非礼勿听,非礼勿言,非礼勿动 ...
- 【源码分析】storm拓扑运行全流程源码分析
[源码分析]storm拓扑运行全流程源码分析 @(STORM)[storm] 源码分析storm拓扑运行全流程源码分析 一拓扑提交流程 一stormpy 1storm jar 2def jar 3ex ...
- janusgraph源码分析1-下载编译启动 1
date: 2018-04-26 title: "janusgraph源码分析1-下载编译启动" author: "邓子明" tags: - 源码 - janu ...
- java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动
在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...
- SequoiaDB 系列之五 :源码分析之main函数
好久好久没有写博客了,因为一直要做各种事,工作上的,生活上的,这一下就是半年. 时光如梭. 这两天回头看了看写的博客,感觉都是贻笑大方. 但是还是想坚持把SequoiaDB系列写完. 初步的打算已经确 ...
最新文章
- mongodb导入hive
- 一道Python面试题,据说大部分人都中招了,纷纷开始怀疑自己
- OpenSSH升级安装步骤(redhat)
- git中Please enter a commit message to explain why this merge is necessary.
- java计算器程序加编辑帮助_这里有个JAVA计算器的小程序,希望帮忙加下注释,少许修改...
- TensorFlow实战-AlexNet
- libdvbpsi源码分析(三)PSI decocder详细分析
- dependencies 和 devDependencies 区别
- QT开发及实例学习之六控件
- php计划任务方法(后台运行无刷新)
- php的数组操作,PHP的数组操作
- bzoj 4318: OSU!(概率DP)
- 如何在linux centos下安装git(转)
- Github emoji 表情包大全
- 制作网页中弹出对话框的制作
- azure mysql on vnet_管理 VNet 终结点 - Azure CLI - Azure Database for MySQL | Microsoft Docs
- 安农大计算机专业录取分数线,安徽农业大学+录取分数线
- IDM+百度网盘提速下载复活版
- Threejs渲染obj+mtl模型源码,3D工厂模型
- 关于使用梆梆加固后,适配android5.0系统与64位机型的问题
热门文章
- RDKit | 生物大分子的HELM表示法
- 那些妖术——树的遍历
- 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么
- unix mysql命令大全_mySql的一些常用命令
- 综述 | 现在是蛋白质组学数据共享和再分析的黄金时间?
- matlab cam orbit,如何在MATLAB中平滑旋转3D绘图?
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行YeoJohnson变换(将非正态分布数据列转换为正态分布数据、可以处理负数)、设置参数为YeoJohnson
- pandas基于dataframe字符串数据列包含(contains)特定字符串来筛选dataframe中的数据行(rows where values contain substring)
- R语言ggplot2可视化箱图、配置抖动数据点(jitter points)避免数据点互相覆盖、并使用线条(line)连接两个箱图中不同分组成对的数据点(jitter on Boxplots)
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变分组次序)实战