Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I check if my program is compiled for 32 or 64 bit processor?

Tags:

go

Is there any standard method to check os is 32 or 64 bit? I've check runtime & os package, but can not found. http://play.golang.org/p/d6NywMDMcY

package main

import "fmt"
import "runtime"

func main() {
    fmt.Println(runtime.GOOS, runtime.GOARCH)
}
like image 797
Daniel YC Lin Avatar asked Sep 09 '14 10:09

Daniel YC Lin


1 Answers

What do you mean by a 32- or 64-bit OS? For example, GOARCH=amd64p32, which is used for GOOS=nacl, is amd64 64-bit instructions with 32-bit pointers and 32-bit type ints and uints.

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

Playground: http://play.golang.org/p/TKnCA0gqsI

Output:

nacl amd64p32
32 32

and

linux amd64
64 64
like image 54
peterSO Avatar answered Sep 21 '22 20:09

peterSO