亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 -X ldflag 調試問題

使用 -X ldflag 調試問題

Go
收到一只叮咚 2023-05-08 15:00:52
我有一個這樣的程序:package mainimport "fmt"var version stringfunc main() {    fmt.Printf("Version %s\n", version)}我想在編譯時更改版本的值,如此處所示,所以我以這種方式構建它(wtf.go 在 src/wtf 中):go build -ldflags "-X wtf/main.version=1.0.0.1234" wtfgo install wtf但是當我運行時,版本是一個空字符串。我嘗試了各種版本的外殼,包名稱和路徑的不同變體。似乎go build并沒有太多地驗證包/變量名,因為顯然偽造的不會產生錯誤。有沒有辦法找出 go 試圖修改的變量,以便解決這個問題?我正在為 Windows/amd64 使用 Go v 1.10.3。
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

錯誤是你必須通過導入路徑指定包,而不是src文件夾的相對文件夾。所以簡單地引用你的version變量,比如main.version.?

所以導航到%GOPATH%/src/wtf,并使用以下命令構建它:

go?build?-ldflags?"-X?main.version=1.0.0.1234"?wtf.go

(或者如果文件夾中沒有包含其他包的源文件src/wtf,則可以省略源文件名。)

這會將 放置wtf.exe在當前文件夾中。運行它會打?。?/p>

Version?1.0.0.1234

請注意,這go install不是必需的。這將構建您的應用程序并將可執行二進制文件放入%GOPATH%/bin,但不會有設置version!

如果要使用go install,則必須再次提供標志。在文件夾中運行以下命令%GOPATH%/src/wtf

go?install?-ldflags?"-X?main.version=1.0.0.1234"

另請注意,go install不需要您go build先運行,也不需要go install先運行go build。


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號