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

相關文章
相關標籤/搜索