手机网站 制作,wordpress信息流主题,湘潭学校网站建设 磐石网络专注,韩国设计交流网站阅读SR BE源码时#xff0c;很多类的引用位置爆红找不到#xff0c;或无法跳转过去#xff0c;而自己的Linux机器往往缺乏各种C依赖库#xff0c;配置安装比较麻烦#xff0c;因此总体的思路是通过CLion远程连接SR社区已经安装完各种依赖库的Docker容器#xff0c;进行编…阅读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/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/安装好Docker服务后执行命令
docker pull starrocks/dev-env-centos7:latest
接着启动docker容器安装SSH所需依赖
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 --privilegedtrue starrocks/dev-env-centos7:latest /usr/sbin/init
其中-v参数用于映射物理机上的源码与JDK存储目录到容器相应目录-p参数用于映射暴露出未来会用来debug的容器端口--privilegedtrue和/usr/sbin/init参数很关键用于获得物理机的root用户与systemd权限否则后面无法通过root进行SSH连接Docker容器。
启动Docker容器进程后记得安装open-ssh-server修改/etc/ssh/sshd_config开启root用户登录 docker exec -it branch-3.3 /bin/bashyum install -y openssh-servervim /etc/ssh/sshd_config
在sshd_config文件中修改如下高亮内容 接着修改容器root用户密码启动SSH服务
passwd root
systemctl restart ssh
最后对镜像容器进程进行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_TYPEDebug ./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