精华 ClickHouse 源码阅读经验分享
发布于 2 个月前 作者 baiyou-yiming 460 次浏览 来自 分享

先随便乱记,以后再整理。

按照官网的步骤编译的,ubuntu 系统。

纯编译,不运行 ./release (这个会报错),编译完自己 sudo make install

用 -g -O0 编译完,clickhouse 可执行文件 500 多MB。

初步看了一下代码,比 linux 内核和 nginx 的源码看起来要舒服多了,比较符合正常人类的思维。

小经验,用 -g -O0 编译,给虚拟机单 core 3G 内存比较好,或者双 core 4G 内存。core 多了编译会死——吃光内存。

起 Server: clickhouse server --config-file=/usr/local/etc/clickhouse-server/config.xml

测试: wget http://127.0.0.1:8123 cat index.html

可以看到:Ok.

在 gdb 里阅读代码(个人习惯哈),发现一个以前不太熟的事儿,C++ 代码跟 C 代码不一样的地方。 C++ 的类的静态实例,静态全局变量,其构造函数会在 main( ) 之前运行。为此 unix/linux 的可执行文件格式,elf,专门增加了 .init 段,来提前运行这些函数。

所以在 main( ) 运行之前,已经有很多代码运行过了,基本都是初始化,这个在阅读和改写代码时要注意。

4 回复

楼主能写详细点么,我的./release也报错,/usr/bin/ld: cannot find -lpthreads

为什么自己编译的有几百M,但是官方的只有不到20M呢?

回到顶部