寫在前面
前一陣項目趕進度上線,10106了很久,現(xiàn)在喘口氣佃延,寫寫博客^ ^.
后面計劃看幾個模塊的代碼了帽撑,所以先今天進行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包,解壓后發(fā)現(xiàn)里邊的文件鏈接都是正常的肋层,編譯成功庇勃。