如何在運行時檢測$ GOHOSTOS和$ GOHOSTARCH的值,並且運行二進制文件的任何系統?請注意,即使主機上沒有安裝編譯器,我也希望檢測這些值。
3
A
回答
1
短版本,你不能。
龍版,您可以創建嵌入在你的代碼的信息,例如構建腳本:
- main.go:
package main
import (
"fmt"
"runtime"
)
var (
hostOS string
hostArch string
)
func main() {
fmt.Println("runtime values:", runtime.GOOS, runtime.GOARCH)
fmt.Println("build time values:", hostOS, hostArch)
}
- build.sh
#!/bin/sh
# replace main. with whatever package you're using
go build -ldflags "-X main.hostOS=$(go env GOHOSTOS) -X main.hostArch=$(go env GOHOSTARCH)" $*
- 輸出:
$ env GOARCH=386 ./build.sh
$ ./tmp
runtime values: linux 386
build time values: linux amd64
+1
謝謝。這就是我最終做的。 – codefx
0
$GOHOSTOS
和$GOHOSTARCH
(分別爲GOOS
和GOARCH
分別提供服務默認值)用於構建go程序並且不影響運行系統的執行。
GOOS
和GOARCH
在編譯時記錄下來,並且可以通過常量runtime.GOOS
和runtime.GOARCH
獲得。 你可能想檢查這些常量。
相關問題
- 1. 如何檢測browserify何時運行?
- 2. 在運行時檢測ContextDeadlockSwitch
- 3. 檢測在運行時
- 4. 如何檢測Flash運行時錯誤?
- 5. 如何檢測Clojure運行時環境?
- 6. 我們如何在運行時檢測和更改樣式?
- 7. 運行時檢測殭屍
- 8. 在運行時檢測庫功能C
- 9. 如何在運行時檢測.NET中是否存在類?
- 10. 如何在Win32 C++程序在後臺運行時檢測KeyPress
- 11. 在運行時檢查測試模式
- 12. 在Windows運行時檢測鼠標
- 13. 檢測是否Qt是在運行時
- 14. 在運行時檢測Facebook API版本?
- 15. 在運行時檢測到DisplaViewController
- 16. 如何在運行時使用java類檢測OS?
- 17. 如何檢測程序運行時kinect何時斷開/拔出?
- 18. 如何在運行時檢測NHibernate HasManyToMany映射?
- 19. 如何檢查「運行時」
- 20. 如何在運行時檢測SO_REUSEPORT的可用性?
- 21. 如何在sbt中檢測JavaFX運行時jar
- 22. 如何檢測遊戲在Surface Pro上運行的時間?
- 23. 如何在運行時檢測OpenGl版本。 Android
- 24. 如何在運行時使用MvvMCross檢測平臺?
- 25. 如何檢測我在運行Unity的系統上的時間?
- 26. 如何在程序運行時檢測重複值?
- 27. 如何在運行時檢測符號是否被剝離?
- 28. 如何在後臺運行時檢測密碼文本字段?
- 29. 如何在運行時檢測SQL託管CLR
- 30. 如何檢測每小時在MySQL上運行的內容?
os.Getenv(「 GOHOSTOS「)? –
如果沒有安裝編譯器,GOHOSTOS env變量是否存在? – codefx
'runtime.GOOS'和'runtime.GOARCH' – creker