cilium镜像编译

概述

简单介绍一下 Cilium 官方的编译和构建镜像的方法,方便以后排查问题或者改造 Cilium 的时候,可以快速构建出可替换的二进制和镜像。

命令

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 工具。

# 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。

# 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 架构中的一个关键部分,专注于前端编译器的角色。

# 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

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编译+安装
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 编译的主要任务是将源代码文件作为输入,最终输出目标文件,这期间发生了什么?便是我们本篇文章要介绍的。在开始之...
    QiShare阅读 4,711评论 0 7
  • iOS 开发中 Objective-C 是 Clang / LLVM 来编译的。swift 是 Swift / L...
    forping阅读 1,152评论 0 0
  • 一:编译器 编译器是什么已不用多说,一句话从代码到机器码就是编译器的工作. 左边输入源码,右边输出机器码 Fron...
    Trigger_o阅读 3,217评论 2 28
  • 1. LLVM概念 1.1 编译器 LLVM与编译器息息相关,究竟什么是编译器呢?带着疑问往下看吧。编译器就是将一...
    冼同学阅读 698评论 1 4
  • 编译器 iOS编译和打包时,编译器直接将代码编译成机器码,然后直接在CPU上运行。而不用使用解释器运行代码。因为这...
    shawnr阅读 7,311评论 1 22

友情链接更多精彩内容