目录

cilium镜像编译

概述

简单介绍一下 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

参考资料

  1. Ubuntu下载源码clang+llvm+lldb编译+安装
警告
本文最后更新于 2023年11月12日,文中内容可能已过时,请谨慎参考。