如何通过Go Build同时移除项目目录与GOPATH/GOROOT路径信息?
Go Build 路径裁剪问题解决
单独裁剪路径的有效命令:
可单独移除GOPATH路径信息:go build -gcflags "all=-trimpath=${GOPATH}" -asmflags "all=-trimpath=${GOPATH}"也可单独移除当前目录路径信息(Windows环境):
go build -gcflags "all=-trimpath=%CD%" -asmflags "all=-trimpath=%CD%"无效命令的问题原因:
在Windows下尝试通过重复指定-gcflags和-asmflags参数来同时移除两个路径:go build -gcflags "all=-trimpath=%CD%" -asmflags "all=-trimpath=%CD%" -gcflags "all=-trimpath=%GOPATH%" -asmflags "all=-trimpath=%GOPATH%"该命令无效是因为重复的flag参数会被最后一次指定的值覆盖,实际只会生效最后一次的GOPATH裁剪配置。
多路径裁剪的正确方式:
如需同时裁剪多个路径,需在同一个-trimpath参数中用逗号分隔目标路径(跨系统通用):# Linux/macOS go build -gcflags "all=-trimpath=${GOPATH},${PWD}" -asmflags "all=-trimpath=${GOPATH},${PWD}" # Windows go build -gcflags "all=-trimpath=%GOPATH%,%CD%" -asmflags "all=-trimpath=%GOPATH%,%CD%"实际需求调整后的可行方案:
后续确认实际需求为移除GOROOT路径信息,调整命令后所有方案均生效,示例命令:# Linux/macOS go build -gcflags "all=-trimpath=${GOROOT}" -asmflags "all=-trimpath=${GOROOT}" # Windows go build -gcflags "all=-trimpath=%GOROOT%" -asmflags "all=-trimpath=%GOROOT%"若需同时裁剪GOROOT、GOPATH和当前目录,同样用逗号分隔:
# Windows go build -gcflags "all=-trimpath=%GOROOT%,%GOPATH%,%CD%" -asmflags "all=-trimpath=%GOROOT%,%GOPATH%,%CD%"
内容的提问来源于stack exchange,提问作者zhang peter
相关产品推荐
相关产品推荐

