写在前面
前一阵项目赶进度上线,10106了很久,现在喘口气,写写博客^ ^.
后面计划看几个模块的代码了,所以先今天进行kubernetes源码的编译,我看源码的时候习惯是先看流程,在自己觉得模糊的地方打上日志,所以源码编译是第一步,往源码里塞完日志,然后编译出二进制跑一跑。
编译遇到的问题
我是clone的代码,然后利用官方的容器进行编译:
KUBE_BUILD_PLATFORMS=linux/amd64 build/run.sh make all WHAT=cmd/kubeadm GOFLAGS=-v GOGCFLAGS="-N -l"
一直报这个错误,耽误了很多青春:
Makefile:1: *** missing separator. Stop.
!!! [1112 10:13:32] Call tree:
!!! [1112 10:13:32] 1: build/../build/common.sh:519 kube::build::run_build_command_ex(...)
!!! [1112 10:13:32] 2: build/run.sh:39 kube::build::run_build_command(...)
!!! Error in build/../build/common.sh:594
Error in build/../build/common.sh:594. '((i<4-1))' exited with status 2
Call stack:
1: build/../build/common.sh:594 kube::build::run_build_command_ex(...)
2: build/../build/common.sh:519 kube::build::run_build_command(...)
3: build/run.sh:39 main(...)
Exiting with status 1
这个问题原因是源码里有几个文件链接,类似这种:
lrwxrwxrwx 1 root root 19 Jun 15 08:58 Makefile -> build/root/Makefile
lrwxrwxrwx 1 root root 35 Jun 15 08:58 Makefile.generated_files -> build/root/Makefile.generated_files
clone后的代码文件链接失效了,所以还是下载官方的release source code的tar包,解压后发现里边的文件链接都是正常的,编译成功。