猿问

#Golang# user: LookupId not implemented on linux/386 golang

在测试一个程序的时候,遇到如下报错
user:LookupIdnotimplementedonlinux/386golang
服务器环境
2.6.32-279.el6.x86_64
操作系统版本
CentOS5.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的版本
goversiongo1.2.1linux/amd64
代码如下:
packagemain
import(
"encoding/json"
"fmt"
"log"
"os/user"
)
funcmain(){
u,err:=user.LookupId("500")
iferr!=nil{
log.Fatal(err)
}
data,err:=json.MarshalIndent(u,"","")
iferr!=nil{
log.Fatal(err)
}
fmt.Printf("%s\n",data)
}
提问,在我现有的环境下,我要如何解决这个问题,这个报错,是说linux/386没有Lookupid的实现,使用什么命令编译会不出现这个问题?
注:在go的用户组也看到类似问题,但是没有看的很明白连接为Crosscompilationandos/user(cgoproblem)
烙印99
浏览 309回答 2
2回答

HUX布斯

不同平台实现不一样的情况,我一般会针对不同的平台单独封装。比如你的情况:既然linux/386没有Lookupid的实现,我会把u,err:=user.LookupId("500")单独搞到一个文件去实现,比如386平台lookuppid_386.gofuncLookupId(idstring)(*User,error){//实现}其它有实现的平台,可以直接调用api,比如lookuppid_unix.gofuncLookupId(idstring)(*User,error){returnuser.LookupId(id)}你业务逻辑调用自己实现的LookupId函数

墨色风雨

若要交叉编译,需要禁用cgo以及各类环境参数。用以下命令试试看CGO_ENABLED=0GOOS=linuxGOARCH=386gobuild
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答