把编译流程变成一张地图,开发才跑得快
本周主线
从」理解」正式进入」开发」:跑通编译测试流程,完成首批表达式开发。
- 梳理 930 分支从依赖安装到产物生成的完整编译流程。
- 结合源码和文档理解项目架构,明确开发需求。
- 首批表达式开发:ISNULL 完成,LEFT / RIGHT 提 PR。
- 固化」构建 → 测试」的个人开发流,沉淀构建优化 skill。
深入:把编译流程变成一张地图
OmniStream 的编译依赖几十个库:JDK、BoostKit、LLVM、rocksdb、rdkafka、jemalloc、snappy、abseil 等,还有 OmniOperator 的多个 so 文件。每一步装错,后面全链失败。
解法是 分步固化,形成一张」编译地图」:
flowchart TD
A[准备 /opt/buildtools] --> B[下载依赖仓库]
B --> C[install_base / install_patch]
C --> D[逐个安装依赖库]
D --> E[构建 OmniOperator]
E --> F[构建 OmniAdaptor]
F --> G[构建 OmniStream]
G --> H[记录产物路径与运行时依赖]关键步骤:先 install_base / install_patch,再逐个装依赖,最后按顺序构建 OmniOperator → OmniAdaptor → OmniStream。同时记录各模块的产物路径和运行时依赖,让」依赖 → 安装脚本 → 产物 → 运行时依赖」这条链完全可复现。
再配上测试链路」改代码 → 构建 → 跑测试」,以及看构建状态的小技巧(pgrep -a make、top),开发验证就完整了。
其他要点
- 首批表达式:ISNULL 完成,LEFT / RIGHT 提 PR,说明」设计 → 实现 → 提 PR」链路已跑通。
- 开发流固化:构建、测试、监控手段齐备,重复动作沉淀成 skill。
沉淀与下一步
三点经验:编译流程是开发验证的地基;先理解、再开发,方向才不容易偏;重复动作沉淀成 skill,上手成本大幅下降。
下一步:推进 LEFT / RIGHT 的 PR 评审,进入 BETWEEN、NOT LIKE 等表达式的密集开发期。
参考资料
- CMake 官方文档:https://cmake.org/documentation/
- LLVM 项目文档:https://llvm.org/docs/