學了一段時間的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