概述
简单介绍一下 Cilium 官方的编译和构建镜像的方法,方便以后排查问题或者改造 Cilium 的时候,可以快速构建出可替换的二进制和镜像。
命令
1
2
3
4
|
curl -LO https://github.com/cilium/cilium/archive/refs/tags/v1.14.4.zip
unzip v1.14.4.zip
cd cilium-1.14.4/
NOOPT=1 DOCKER_IMAGE_TAG=v1.14.4 make docker-cilium-image
|
单独编译二进制,这里是指 Cilium 的 CLI 工具。
1
2
3
|
# make cilium
# make[1]: 进入目录“/root/cilium-1.14.4/cilium”
CGO_ENABLED=0 go build -mod=vendor -ldflags ' -X "github.com/cilium/cilium/pkg/version.ciliumVersion=1.14.4 runzhliu" -s -w -X "github.com/cilium/cilium/pkg/proxy.requiredEnvoyVersionSHA=ff0d5d3f77d610040e93c7c7a430d61a0c0b90c1" -X "github.com/cilium/cilium/pkg/datapath/loader.DatapathSHA256=1654debbc745b5c91e5fbb250c9a8ee7d0d5b2f5ffdac9846359ac4ec5a64c63" ' -tags=osusergo -gcflags="all=-N -l" -o cilium
|
编译 cilium-agent。
1
2
3
4
5
6
|
# make daemon
# make[1]: 进入目录“/root/cilium-1.14.4/daemon”
CGO_ENABLED=0 go build -mod=vendor -ldflags ' -X "github.com/cilium/cilium/pkg/version.ciliumVersion=1.14.4 runzhliu" -s -w -X "github.com/cilium/cilium/pkg/proxy.requiredEnvoyVersionSHA=ff0d5d3f77d610040e93c7c7a430d61a0c0b90c1" -X "github.com/cilium/cilium/pkg/datapath/loader.DatapathSHA256=1654debbc745b5c91e5fbb250c9a8ee7d0d5b2f5ffdac9846359ac4ec5a64c63" ' -tags=osusergo -o cilium-agent
# 最后成功的
GOOS=linux GOARCH=amd64 go build -gcflags="all=-N -l"
|
工具版本一览
归纳起来,LLVM 是底层的编译器基础设施,它提供了代码生成和优化的能力,并且可以为多种编程语言服务。而 Clang 是 LLVM 的一个组件,专门处理 C 语言系(C、C++、Objective-C、Objective-C++)的编译前端工作。Clang 使用 LLVM 生成的 IR,然后 LLVM 的后端负责将 IR 转换成目标机器的代码。
在整个编译过程中,Clang 负责解析源代码,进行语法分析,生成抽象语法树(AST),然后生成 LLVM IR。之后,LLVM 接管 IR,进行优化并生成最终的机器代码。所以可以说,Clang 是 LLVM 架构中的一个关键部分,专注于前端编译器的角色。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# llc --version
LLVM (http://llvm.org/):
LLVM version 10.0.0
Optimized build.
Default target: x86_64-unknown-linux-gnu
Host CPU: ivybridge
Registered Targets:
bpf - BPF (host endian)
bpfeb - BPF (big endian)
bpfel - BPF (little endian)
# clang --version
clang version 10.0.0 (https://github.com/llvm/llvm-project.git 0598a534371d5fd6debd129b1378b39b923b9787)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
|
编译clang
可以下载 clang 源码进行编译安装。
1
|
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang-10.0.0.src.tar.xz
|
参考资料
- Ubuntu下载源码clang+llvm+lldb编译+安装
警告
本文最后更新于 2023年11月12日,文中内容可能已过时,请谨慎参考。