为了账号安全,请及时绑定邮箱和手机立即绑定

如何在运行时检测 $GOHOSTOS 和 $GOHOSTARCH?

如何在运行时检测 $GOHOSTOS 和 $GOHOSTARCH?

Go
白猪掌柜的 2022-01-17 17:59:48
如何在运行 go 二进制文件的任何系统上检测 $GOHOSTOS 和 $GOHOSTARCH 的值?请注意,即使主机上没有安装 go 编译器,我也想检测这些值。
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

$GOHOSTOS和( 分别为和$GOHOSTARCH提供默认值) 在构建 go 程序时使用,不会影响运行时系统的执行。GOOSGOARCH

GOOSGOARCH在编译时记录并通过常量runtime.GOOSruntime.GOARCH. 您可能需要检查这些常量。


查看完整回答
反对 回复 2022-01-17
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

短版,你不能。


长版本,您可以创建一个将信息嵌入代码中的构建脚本,例如:


- 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)

}

- 构建.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


查看完整回答
反对 回复 2022-01-17
  • 2 回答
  • 0 关注
  • 374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号