编译
编译前准备
编译目标
Makefile描述了整个项目的所有编译目标,主要的包括:
目标
描述
core
仅编译C++核心
plugin
仅编译Go插件
all
编译完整iLogtail
dist
打包发行
docker
制作iLogtail镜像
plugin_local
本地编译Go插件
使用make <target>
命令编译所选目标,如果需要指定生成的版本号则在编译命令前加上VERSION环境变量,如:
VERSION=1.1.1 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/ilogtail-community-edition/ilogtail-build-linux
使用镜像编译完整iLogtail
编译完整iLogtail的命令是make all
,由于all是默认的编译目标,因此也可以直接make
。该命令首先清理output
目录,然后调用./scripts/gen_build_scripts.sh
脚本生成编译用的脚本和镜像描述保存到./gen
目录,调用 docker 制作镜像,制作的过程即镜像内的编译过程,最后将镜像内的编译结果复制到output
目录。
以下命令可以快速编译出iLogtail的可执行程序和插件。
1. 进入源代码顶层目录。
2. 执行命令make
。
3. 查看output
目录结果。
./output
├── ilogtail (主程序)
├── libPluginAdapter.so(插件接口)
├── libPluginBase.h
└── libPluginBase.so (插件lib)
开发环境增量编译的方法请参考开发环境。
Go插件本地编译
Go插件可以在主机上进行直接编译,编译前,需要安装基础的 Go 1.16+ 语言开发环境,如何安装可以参见官方文档。 在安装完成后,为了方便后续地开发,请遵照此文档正确地设置你的开发目录以及 GOPATH 等环境变量。。
go mod tidy # 若需要更新插件依赖库
make plugin_local # 每次更新插件代码后从这里开始
如果未对只是对插件依赖库进行修改,则只需要执行最后一行命令即可。
Last updated