目录

问题解决

更换Arch或系统


问题解决

编译k8s源码的kubelet时执行make失败:Makefile:1: *** 缺失分隔符。 停止。

首先,查看文件内容

# cat Makefile 
build/root/Makefile

修改Makefile,给第一行前增加include,如下:

include build/root/Makefile

重试,会有类似的权限问题:

bash:行1: build/make-clean.sh: 权限不够
make: *** [build/root/Makefile:319:clean] 错误 126

bash:行1: hack/make-rules/clean.sh: 权限不够
make: *** [build/root/Makefile:320:clean] 错误 126

bash:行1: hack/make-rules/build.sh: 权限不够
make: *** [build/root/Makefile:95:all] 错误 126

给提示的几个文件增加权限:

chmod 755 build/make-clean.sh
chmod 755 hack/make-rules/clean.sh
chmod 755 hack/make-rules/build.sh

接着执行(以kubectl为例)完成编译:

make WHAT=cmd/kubectl

不指定WHAT时编译全部,默认使用linux/amd64平台和架构。

编译会在当前目录下生成一个_output路径,最终结果在当前路径下:

_output/local/bin/linux/amd64/

自动按系统和Arch创建路径名。

更换Arch或系统

例如需要编译arm64架构时:

KUBE_BUILD_PLATFORMS=linux/arm64 make WHAT=cmd/kubectl GOFLAGS=-v

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐