CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/LoongCollector/编译
文档目录
快速开始Docker使用Kubernetes使用守护进程目录结构说明iLogtail 兼容模式使用指南支持的操作系统
下载编译Docker镜像编译依赖

LoongCollector

编译

下载源代码 安装docker Makefile描述了整个项目的所有编译目标,主要的包括: | 目标 | 描述 | | --- | --- | | core | 仅编译C++核心 | | plugin | 仅编译Go插件 | | all | 编译完整 LoongCollector | | dist | 打包发行 | | docker | 制作 LoongCollector 镜像 | |...

编译

Linux版本编译

编译前准备

下载源代码

安装docker

编译目标

Makefile描述了整个项目的所有编译目标,主要的包括:

目标 描述
core 仅编译C++核心
plugin 仅编译Go插件
all 编译完整 LoongCollector
dist 打包发行
docker 制作 LoongCollector 镜像
plugin_local 本地编译Go插件

使用make <target>命令编译所选目标,如果需要指定生成的版本号则在编译命令前加上VERSION环境变量,如:

VERSION=0.0.2 make dist

如果发生编译错误,如

/src/core/common/CompressTools.cpp:18:23: fatal error: zstd/zstd.h: No such file or directory
 #include <zstd/zstd.h>
                       ^
compilation terminated.

请确保本地编译镜像为最新版本。可使用以下命令更新:

docker pull sls-opensource-registry.cn-shanghai.cr.aliyuncs.com/loongcollector-community-edition/loongcollector-build-linux

使用镜像编译完整 LoongCollector

编译完整 LoongCollector 的命令是make all,由于all是默认的编译目标,因此也可以直接make。该命令首先清理output目录,然后调用./scripts/gen_build_scripts.sh脚本生成编译用的脚本和镜像描述保存到./gen目录,调用 docker 制作镜像,制作的过程即镜像内的编译过程,最后将镜像内的编译结果复制到output目录。

以下命令可以快速编译出 LoongCollector 的可执行程序和插件。

1. 进入源代码顶层目录。

2. 执行命令make。

3. 查看output目录结果。

./output
├── loongcollector (主程序)
├── libPluginAdapter.so(插件接口)
├── libPluginBase.h
└── libPluginBase.so (插件lib)

开发环境增量编译的方法请参考开发环境。

Go插件本地编译

Go插件可以在主机上进行直接编译,编译前,需要安装基础的 Go 1.16+
语言开发环境,如何安装可以参见官方文档。
在安装完成后,为了方便后续地开发,请遵照此文档正确地设置你的开发目录以及 GOPATH 等环境变量。。

go mod tidy       # 若需要更新插件依赖库
make plugin_local # 每次更新插件代码后从这里开始

如果未对只是对插件依赖库进行修改,则只需要执行最后一行命令即可。

编译时替换外部模块

LoongCollector 通过 Provider 模块暴露出一些拓展点,这些拓展点可以由用户自行实现,并通过编译时CMAKE DPROVIDER_PATH选项替换掉默认的实现。

示例:

cmake -DPROVIDER_PATH=../../../core_extensions/provider ..

文章大纲