在测试一个程序的时候,遇到如下报错
user: LookupId not implemented on linux/386 golang
服务器环境
2.6.32-279.el6.x86_64
操作系统版本
CentOS 5.8
go 的环境
GOARCH="386"
GOBIN="/home/apps/go/bin"
GOCHAR="8"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/apps/go-project/GO"
GORACE=""
GOROOT="/home/apps/go"
GOTOOLDIR="/home/apps/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32"
CXX="g++"
CGO_ENABLED="0"
go 的版本
go version go1.2.1 linux/amd64
代码如下:
package main
import (
"encoding/json"
"fmt"
"log"
"os/user"
)
func main(){
u, err := user.LookupId("500")
if err != nil {
log.Fatal(err)
}
data, err := json.MarshalIndent(u, "", "")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", data)
}
提问,在我现有的环境下,我要如何解决这个问题,这个报错,是说 linux/386 没有 Lookupid 的实现,使用什么命令编译会不出现这个问题?
注:在 go 的用户组也看到类似问题,但是没有看的很明白 连接为 Cross compilation and os/user (cgo problem)
不同平台实现不一样的情况,我一般会针对不同的平台单独封装。
比如你的情况:
既然 linux/386 没有 Lookupid 的实现,我会把
单独搞到一个文件去实现,比如386平台
lookuppid_386.go
其它有实现的平台,可以直接调用api, 比如
lookuppid_unix.go
你业务逻辑调用自己实现的 LookupId 函数