2
這裏時,包含鏈接標誌的字符串值空間是測試代碼m.go:如何使用去建立
package main
var version string
func main() {
println("ver = ", version)
}
如果我編譯和鏈接一起去1.5:
go tool compile m.go
go tool link -o m -X main.version="abc 123" m.o
工作正常。
但是,如果使用建立命令去1.5:
go build -o m -ldflags '-X main.version="abc 123"' m.go
它會顯示幫助消息,這意味着什麼不對
如果我更改爲1.4語法:
go build -o m -ldflags '-X main.version "abc 123"' m.go
它除警告信息外的作品:
link: warning: option -X main.version abc 123 may not work in future releases; use -X main.version=abc 123
如果它在參數值沒有空間,做工精細:
go build -o m -ldflags '-X main.version=abc123' m.go
因爲編譯和鏈接正常工作,所以我想是不是鏈接的一部分問題。 我比較了go1.4和build 1.5的源代碼,對於ldflags部分,看起來沒有什麼變化。因爲我可以使用一些空間字符替換空間然後在程序中將其改回,但是爲什麼?有什麼我錯過了嗎?什麼是正確的語法使用-ldflags?由於
例如用日期,用於將構建時可變'''去建立-ldflags「-X 'main.buildtime = $(日期-u' +% Y-%m-%d%H:%M:%S')'「''' – xorpaul