当前位置: 首页 > news >正文

StarRocks BE源码编译、CLion高亮跳转方法

阅读SR BE源码时,很多类的引用位置爆红找不到,或无法跳转过去,而自己的Linux机器往往缺乏各种C++依赖库,配置安装比较麻烦,因此总体的思路是通过CLion远程连接SR社区已经安装完各种依赖库的Docker容器,进行编译和源码查看

一、社区Docker容器部署

首先需要在一台CentOS物理机上安装SR社区的Centos Docker容器(Ubuntu容器无法调用CentOS物理机的/usr/sbin/init脚本),安装新版Docker服务的方法参考:

centos7安装Docker详细步骤(无坑版教程)-腾讯云开发者社区-腾讯云在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。https://cloud.tencent.com/developer/article/1701451https://cloud.tencent.com/developer/article/1701451https://cloud.tencent.com/developer/article/1701451https://cloud.tencent.com/developer/article/1701451SR官方社区容器列表如下:

Compile StarRocks with Docker | StarRocksThis topic describes how to compile StarRocks using Docker.https://docs.starrocks.io/docs/developers/build-starrocks/Build_in_docker/https://docs.starrocks.io/docs/developers/build-starrocks/Build_in_docker/https://docs.starrocks.io/docs/developers/build-starrocks/Build_in_docker/https://docs.starrocks.io/docs/developers/build-starrocks/Build_in_docker/安装好Docker服务后,执行命令:

docker pull starrocks/dev-env-centos7:latest

接着启动docker容器,安装SSH所需依赖:

# centos docker run -itd -v /root/.m2:/root/.m2 -v /home/data/starrocks:/root/starrocks -v /home/data/.jdks/azul-11.0.25:/root/java -p 8022:22 -p 8030:8030 -p 8040 :8040 -p 9030:9030 -p 5005:5005 --name branch-3.3 -d --privileged=true starrocks/dev-env-centos7:latest /usr/sbin/init # ubuntu docker run -itd -v /home/data/OpenSource/starrocks:/root/starrocks -p 8022:22 -p 8030:8030 -p 8040:8040 -p 9030:9030 -p 5005:5005 --name branch-3.5 --privileged=true starrocks/dev-env-ubuntu:3.5-latest

其中-v参数用于映射物理机上的源码与JDK存储目录到容器相应目录,-p参数用于映射暴露出未来会用来debug的容器端口,--privileged=true和/usr/sbin/init参数很关键,用于获得物理机的root用户与systemd权限,否则后面无法通过root进行SSH连接Docker容器。

启动Docker容器进程后,记得安装open-ssh-server,修改/etc/ssh/sshd_config,开启root用户登录

docker exec -it branch-3.3 /bin/bash # centos yum install -y openssh-server # ubuntu apt install -y openssh-server vim /etc/ssh/sshd_config

在sshd_config文件中,修改如下高亮内容:

接着修改容器root用户密码,启动SSH服务:

passwd root # centos systemctl restart ssh # ubuntu service ssh restart exit

检测一下对应容器能否ssh登录:

ssh -p 8022 root@x.x.x.x

最后对镜像容器进程进行docker commit,提交改动和开启ssh后的新镜像,便于下次重启容器:

# 查看已配置好的镜像进程号 docker ps # 提交成新的镜像,方便以后重启容器而不重复安装ssh docker commit de7db66d6a75 starrocks-dev-3.3

二、在容器中编译源码

C++依赖完善、具备SSH功能的CentOS Docker容器启动后,就需要在容器中编译SR源码了,先编译BE再编译FE:

# 进入容器中的SR源码根目录,映射了物理机的目录 cd /root/starrocks # 开启存算分离模式的编译 BUILD_TYPE=Debug ./build.sh --be --enable-shared-data --without-java-ext -j12 ./build.sh --fe --enable-shared-data --without-java-ext

其中BE C++编译会记忆上次进度百分比,如果不是自己改动源码的问题导致编译BE到一半报Error停止了,可以多执行几次BE的编译命令,会接着上次进度百分比继续编译。

编译完成后,部署包产出会在SR源码根目录的output子目录下。

三、使用CLion远程连接容器

编译好SR源码后,需将容器上完整编译后的gensrc/build等目录,下载回自己本机的对应源码目录gensrc下

接着在本机CLion上打开SR BE源码,在Settings的Toolchains菜单中配置远程SSH连接,目标是上述Docker容器进程:

然后在CMake菜单中选择刚才的Remote Debug环境进行连接,其中Build directory是容器中使用./build.sh编译后的结果目录,该目录会从容器自动同步回本机,默认就叫build_Debug

接着是配置环境变量,在CMake菜单中的Environment选项里,填写如下环境变量:

注意红框中的选项不要勾选,SR社区容器中已经编译好的thirdparty依赖库在容器的/var/local/thirdparty目录下。

最后在下面的Deployment菜单中,配置本机BE源码到容器BE源码的部署路径映射:

点击OK生效之后,CLion就会自动同步本机和远程容器上的源码编译结果,同步完成后,本机上BE源码的高亮跳转就可以生效了。

四、利用IDEA远程开发功能查看FE源码

FE源码可以在本机IDEA上编译和查看,但是先前CentOS物理机已经编译过一次FE,所以也可以利用IDEA的Remote Development功能,远程连接物理机上的FE项目进行查看:

这样可以节省本机上的磁盘空间,因为时间长了maven本地仓库容量会变得很大。

五、在容器中启动FE和BE测试

如果后面修改了源码,想进行Debug测试,可以用如下命令启动SR进程:

fe/bin/start_fe.sh --daemon be/bin/start_cn.sh --daemon
http://www.zskr.cn/news/1520028.html

相关文章:

  • 2026年6月北京门窗维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • OneDev终极指南:打造企业级一体化DevOps平台的最佳实践
  • MC56F825x/4x DSC外设硬件协同设计:ADC、PWM与XBAR的实战联动
  • HyperTool:突破传统工具调用限制,让Agent更高效执行复杂任务
  • QtScrcpy跨平台键鼠映射实战指南:从原理到专业级手游操控
  • 别再让小目标‘隐身’!手把手教你用PyTorch实现F³Net的加权损失函数(附代码避坑)
  • Phoenix钱包部署指南:从测试网到主网的完整迁移流程
  • 学之思考试系统:10分钟构建企业级在线考试平台
  • Tree-of-Thought Prompting项目全解析:让AI自主纠错的创新框架
  • 网上找工程师上门安全吗?平台可靠性深度分析 - 简单到家
  • 2026年6月重庆空调维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • 2026年线上维修订单量增35%,服务质量跟上了吗? - 简单到家
  • 2026年6月广州油烟机维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • 张家口瓷砖空鼓翘边拱起怎么解决?2026专业修复方法攻略 - 苏易修缮
  • 2026年 合肥上海手表回收平台推荐榜:专业评估,名表高价变现与无忧服务口碑之选 - 品牌发掘
  • 2026优选:合肥/北京/上海/苏州黄金回收与名表名包回收服务公司实力评估报告 - 品牌发掘
  • 高端手工蛋卷品牌排行榜:JAOLIS角力士凭实力登顶 年货中秋伴手礼必选实力品牌 TOP 推荐 - 变量人生001
  • 成都洗衣机不脱水还异响?3大维修平台实测对比 - 简单到家
  • 宁波瓷砖空鼓翘边拱起怎么解决?2026专业修复方法攻略 - 苏易修缮
  • SPI从机驱动开发:中断与DMA模式详解及Kinetis SDK实践
  • 2026年 苏州名表回收机构推荐榜:专业鉴定与高价回收服务口碑之选 - 品牌发掘
  • 温州瓷砖空鼓翘边拱起怎么解决?2026专业修复方法攻略 - 苏易修缮
  • 2026 年版传统程序员 AI 大模型转型全攻略!依托 Dify 实战转行,告别被替代焦虑
  • 海康摄像头直连TrueNAS存储,除了NFS你还可以试试SMB/CIFS吗?实测对比与选择建议
  • BlueLM 7B Chat安全合规指南:模型使用许可与数据隐私保护
  • 2026年6月宁波油烟机清洗平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • Wwise音频文件终极指南:5步掌握游戏音频解包与替换技术
  • 武汉燃气灶打不着火怎么办?原因排查与维修平台实测对比 - 简单到家
  • 2026年6月水管维修平台横评:4大品牌实测对比 - 简单到家
  • 如何快速掌握F3D:5个技巧让你成为3D文件查看专家