go build 移除路径信息

学了一段时间的Golang以后,一直有个困惑,为何报错的时候提示是这样的。git

panic: 文件不存在

  goroutine 1 [running]:
  main.findFile(...)
       /Users/Darcy/Desktop/projec/main.go:4
  main.main()
      /Users/Darcy/Desktop/projec/main.go:8 +0x3a
  exit status 2
复制代码

做为一名开发人员,总感受不是那么安全和严谨。报错信息里包含了你编译时候项目的所在路径,总感受曝光了本身同样。github

因而搜索网上怎么去除路径,找到了一个解决方法。 修改后的编译脚本以下:安全

CGO_ENABLED=0 go build -v -a -ldflags '-s -w' \
   	-gcflags=-trimpath=$(PWD) \
   	-asmflags=-trimpath=$(PWD) \
   	-o ./main main.go
复制代码

这时候编译再运行,再次报错的时候就变成了下面这样,已经没有了文件路径。bash

panic: 文件不存在

goroutine 1 [running]:
main.findFile(...)
       main.go:4
main.main()
       main.go:8 +0x3a
复制代码

你会想应该去掉了路径吧。我也是这样想的。可一会以后又报错了,再次报错的信息以下:ui

panic: No Such File

goroutine 1 [running]:
github.com/clllab/mov/utils.FindEnv(...)
     /Users/Darcy/Desktop/projec/utils/utils.go:7
main.main()
     main.go:14 +0x4e
复制代码

发现了吧,虽然main package里面没有了报错信息,可其余的package的panic 一样仍是有包含路径信息。因而继续搜索。spa

而后找到了这篇文章: stackoverflowcode

编译脚本改为了这样:开发

CGO_ENABLED=0 go build -v -a -ldflags '-s -w' \
   	-gcflags="all=-trimpath=${PWD}" \
   	-asmflags="all=-trimpath=${PWD}" \
   	-o ./main main.go
复制代码

这时候打包出来再报错的话就不会再包含绝对路径信息了。rem

原文连接: go build 移除路径信息get

相关文章
相关标签/搜索