最近在使用 minikube,这玩意用 go 写的
只要这样就能安装
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
当然,这个是已经编译好的二进制发行版
我想从源码自己编译安装一个玩玩(学习)
然后,我打算在 机器 A 上编译(ubuntu20.04 x86-64)
git clone git@github.com:kubernetes/minikube.git
make
输出如下
╰─➤ make 2 ↵
go build -tags "" -ldflags="-X k8s.io/minikube/pkg/version.version=v1.31.1 -X k8s.io/minikube/pkg/version.isoVersion=v1.31.0 -X k8s.io/minikube/pkg/version.gitCommitID="747495cfea7e72001c07d76ac9472837993e7efc" -X k8s.io/minikube/pkg/version.storageProvisionerVersion=v5" -o out/minikube k8s.io/minikube/cmd/minikube
go: downloading github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95
go: downloading github.com/moby/sys/mountinfo v0.6.2
go: downloading github.com/VividCortex/ewma v1.2.0
go: downloading github.com/hashicorp/go-version v1.6.0
查看能不能用
╰─➤ ./out/minikube version
minikube version: v1.31.1
commit: 747495cfea7e72001c07d76ac9472837993e7efc
没毛病
然后我把这个源码编译出来的 minikube 复制到另一个机器B (ubuntu22.04 x86-64)
但是在机器 B 上缺无法运行
➤ ./minikube 1 ↵
[1] 1543533 segmentation fault ./minikube
直接段错误?为什么?
为什么官方发型的那个可以跑在任何 x64 的 linux 上,我自己编译出来的却只能跑在当前机器上,换个机器就不行了?
解决了,chatGPT 告诉我的
让我添加 CGO_ENABLED=0 就好了
试了一下,确实 ok 了
-ldflags 是可选的,加不加不影响能不能跑
所以,最小化可以这样