goバイナリが実行されているシステムで、実行時に$ GOHOSTOSと$ GOHOSTARCHの値を検出するにはどうすればよいですか?コンパイラのインストールがホストにない場合でも、これらの値を検出したいと考えています。
3
A
答えて
1
ショートバージョンはできません。
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)" $*
: - main.go
:
ロングバージョン、あなたは例えば、あなたのコード内の情報を埋め込むビルドスクリプトを作成することができます
- 出力:
$ env GOARCH=386 ./build.sh
$ ./tmp
runtime values: linux 386
build time values: linux amd64
+1
ありがとうございました。それが私のやり方です。 – codefx
0
$GOHOSTOS
と$GOHOSTARCH
(それぞれGOOS
とGOARCH
のデフォルト値を提供)、外出先プログラムの構築時に使用され、ランタイムシステムの実行に影響を与えません。
GOOS
およびGOARCH
は、コンパイル時に記録され、定数runtime.GOOS
およびruntime.GOARCH
によって利用可能になります。 これらの定数を確認することができます。
関連する問題
- 1. 実行時にCでOSを検出する方法
- 2. Javaクラスを使用して実行時にOSを検出する方法は?
- 3. 実行時にEFモデルメタデータを検査する方法は?
- 4. Redshift:検出とキャンセルユーザーごとに長時間実行するクエリ
- 5. 実行時にrootとしてMPIを実行する方法/
- 6. スピン時にUIPickerViewの中央の行を検出する方法
- 7. 実行時にARMv8 A53とA57アーキテクチャを検出しますか?
- 8. 実行時にViewChildを呼び出す方法は?
- 9. 実行中のオペレーティングシステムを検出する方法は?
- 10. 実行時にcombinationfieldのクエリを実行する方法は?
- 11. プレディクスの異常検出にアナリティックを実行する方法
- 12. 実行時にスタックオーバーフローを事前に検出する
- 13. 同時実行GCが.NETで実行されているかどうかを検出する方法
- 14. 実行時にタイプパラメータとして "dynamic"キーワードを使用することを検出
- 15. 実行時にハードウェアアクセラレーションを検出する:Android
- 16. 実行時にルビーバイナリのコンパイルレイアウトを検出する
- 17. 実行時にi3/i5/i7 Intel Coreファミリを検出する
- 18. アンドロイドで夏時間の移行を検出する方法
- 19. 実行時にC#からF#レコードタイプを検出する
- 20. Java - 実行時のメモリスワップの検出
- 21. Yii2:送信時にActiveFormの検証を検出する方法
- 22. Dartで実行時の型チェックを実行する方法は?
- 23. 実行時にjarファイルからメソッドを呼び出す方法
- 24. WebBrowserコントロールでjavascriptの実行を検出する方法
- 25. Firebaseのテストラボでの実行を検出する方法
- 26. 実行時のアプリケーション出力タイプを変更する方法
- 27. 実行時にRowClick(ExtNet Store)を実行する方法
- 28. 実行時に同じ関数を再実行する方法
- 29. コンパイル時に「厳密なエイリアシング」を検出する方法は?
- 30. 実行時にデータを配置する方法テーブル、つまり実行時にテーブルを作成する方法
os.Getenv( " GOHOSTOS ")? –
GOHOSTOS env変数は、コンパイラのインストールがない場合には存在しますか? – codefx
'runtime.GOOS'と' runtime.GOARCH' – creker