golang 版本 < 1.5 - 有大量静态链接示例、帖子和食谱。>= 1.5 怎么样?(谷歌搜索没有为我的搜索词返回任何有用的结果。)有人对如何生成可以在基本 rkt(来自 CoreOS)容器内执行的静态链接二进制文件有任何建议吗?我去:$go versiongo version go1.5 linux/amd64当我尝试运行我的容器时:sudo rkt --insecure-skip-verify run /tmp/FastBonusReport.aci我得到:[38049.477658] FastBonusReport[4]: Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory暗示容器中的可执行文件依赖于这个库,因此不是静态的。我的清单看起来像:cat <<EOF > /tmp/${myapp}/manifest{ "acKind": "ImageManifest", "acVersion": "0.9.0", "name": "${lowermyapp}", "labels": [ {"name": "os", "value": "linux"}, {"name": "arch", "value": "amd64"} ], "app": { "exec": [ "/bin/${myapp}" ], "user": "0", "group": "0" }}EOF我构建二进制文件的命令行如下所示:go build ${myapp}.go这篇文章有几个例子 golang < 1.5。然后在 CoreOS 站点上有这篇入门文章。
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
我讨厌回答我自己的问题。评论是正确的,CGO_ENABLED=0 go build ./...
似乎已经做到了。
虽然它不是原始问题的一部分,但一旦程序开始在 rkt 容器中执行,它就无法执行正确的 DNS 请求。所以一定还有别的事情发生。
温温酱
TA贡献1752条经验 获得超4个赞
静态链接:
转到 1.5:
go build -ldflags "-extldflags -static" ...
在 Go 1.6 中,我必须使用:
go build -ldflags "-linkmode external -extldflags -static" ...
- 2 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消