如何检查我的程序是否针对32位或64位处理器进行编译?

时间:2014-09-09 10:04:04

标签: go

是否有任何标准方法来检查操作系统是32位还是64位? 我检查了运行时间& os包,但找不到。 http://play.golang.org/p/d6NywMDMcY

package main

import "fmt"
import "runtime"

func main() {
    fmt.Println(runtime.GOOS, runtime.GOARCH)
}

2 个答案:

答案 0 :(得分:9)

32位或64位操作系统是什么意思?例如,用于GOARCH=amd64p32的{​​{1}}是GOOS=nacl 64位指令,具有32位指针和32位类型amd64 s和{{1} }第

int

游乐场:http://play.golang.org/p/TKnCA0gqsI

输出:

uint

package main

import (
    "fmt"
    "runtime"
    "strconv"
)

func main() {
    const PtrSize = 32 << uintptr(^uintptr(0)>>63)
    fmt.Println(runtime.GOOS, runtime.GOARCH)
    fmt.Println(strconv.IntSize, PtrSize)
}

答案 1 :(得分:-1)

您可以使用unsafe包并计算指针的大小(4位为32位,8位为64位)。 这是一个工作示例:http://play.golang.org/p/MPap9KMD1y