我知道问题可能看起来太具体了,但我认为答案也可能对其他领域有用。
我遇到的真正问题:给定具有sh
二进制文件的任意容器映像,请从Google Cloud Storage下载文件。
由于下载二进制文件不存在于用户映像中,所以我有一个想法将编码后的二进制文件放入命令行中(有点类似于python -c <code>
之类的内联脚本)。但是,命令行大小(〜1MiB)受限制,因此二进制文件应小于此大小。
由于易于创建静态链接的二进制文件,并且人们报告GO二进制文件很小,因此我决定使用Go。
我已经编写了一个Go程序,该程序使用cloud.google.com/go/storage
模块来创建客户端并读取Blob storage.NewClient().Bucket(bucket).Object(object).NewReader()
。
不幸的是,简单程序的二进制文件为15MiB。添加go build -ldflags=" -s -w"
(如How to reduce compiled file size?中的建议)可将其减少到10MiB。仍然比我的预算大几个数量级。
我可以使用二进制优化或修剪技术吗?
如果我希望使用较小的二进制文件,是否应该使用其他语言(例如C ++)?
如果尝试使用一些通用的REST客户端库,我会好运吗? //看起来像没有-使用http.Get
的剥离后的Go程序的大小为5MiB。
我认为您无法将Go二进制文件的大小降低到1 MiB以下,特别是如果您必须使用功能齐全的第三方库(例如GCP存储绑定)。
很奇怪,您现在的年龄限制为1 MiB,但如果确实如此,我建议您这样做: