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

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

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

烙印99 2019-04-13 08:45:29
在测试一个程序的时候,遇到如下报错user:LookupIdnotimplementedonlinux/386golang服务器环境2.6.32-279.el6.x86_64操作系统版本CentOS5.8go的环境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代码如下:packagemainimport("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)
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

不同平台实现不一样的情况,我一般会针对不同的平台单独封装。
比如你的情况:
既然linux/386没有Lookupid的实现,我会把
u,err:=user.LookupId("500")
单独搞到一个文件去实现,比如386平台
lookuppid_386.go
funcLookupId(idstring)(*User,error){
//实现
}
其它有实现的平台,可以直接调用api,比如
lookuppid_unix.go
funcLookupId(idstring)(*User,error){
returnuser.LookupId(id)
}
你业务逻辑调用自己实现的LookupId函数
                            
查看完整回答
反对 回复 2019-04-13
?
墨色风雨

TA贡献1853条经验 获得超6个赞

若要交叉编译,需要禁用cgo以及各类环境参数。用以下命令试试看
CGO_ENABLED=0GOOS=linuxGOARCH=386gobuild
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 308 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信