servicecomb-service-center icon indicating copy to clipboard operation
servicecomb-service-center copied to clipboard

本地编译arm版本的SC源码包

Open solomoni0999 opened this issue 6 years ago • 5 comments

本地编译ARM版本的servicecenter包失败,无法下载依赖库。

solomoni0999 avatar Jun 12 '19 03:06 solomoni0999

ServiceCenter本身是平台无关的,建议你看看是否 是网络问题,比如,是否所有Go的软件都无法下载依赖库? 你可以尝试使用GOPROXY.

zenlint avatar Jun 12 '19 06:06 zenlint

windows 平台下编译arm版本的源码包时报以下错误:

>set GO111MODULE=on
>go mod download
>go mod vendor
>SET CGO_ENABLED=0
>SET GOOS=windows
>SET GOARCH=arm
>go build -o service-center
# golang.org/x/sys/windows
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:24:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:25:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2106:38: undefined: WSAData
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2346:51: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2360:50: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2362:8: undefined: Servent

以下是我的go env

>go env
set GOARCH=arm
set GOBIN=
set GOCACHE=C:\Users\y00504233\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\y00504233\go;D:\Workspace\go-work
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set GOARM=5
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=C:\Users\y00504233\go\src\github.com\apache\servicecomb-service-center\servicecomb-service-center\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-marm -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Y00504~1\AppData\Local\Temp\go-build965999206=/tmp/go-build -gno-record-gcc-switches

请问一下该如何解决,谢谢~

zivenyang avatar Jun 18 '19 04:06 zivenyang

windows 平台下编译arm版本的源码包时报以下错误:

>set GO111MODULE=on
>go mod download
>go mod vendor
>SET CGO_ENABLED=0
>SET GOOS=windows
>SET GOARCH=arm
>go build -o service-center
# golang.org/x/sys/windows
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:24:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:25:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2106:38: undefined: WSAData
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2346:51: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2360:50: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2362:8: undefined: Servent

以下是我的go env

>go env
set GOARCH=arm
set GOBIN=
set GOCACHE=C:\Users\y00504233\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\y00504233\go;D:\Workspace\go-work
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set GOARM=5
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=C:\Users\y00504233\go\src\github.com\apache\servicecomb-service-center\servicecomb-service-center\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-marm -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Y00504~1\AppData\Local\Temp\go-build965999206=/tmp/go-build -gno-record-gcc-switches

请问一下该如何解决,谢谢~

好像是sys版本的问题,原来使用的是github.com\golang\[email protected],后来我git clone https://github.com/golang/sys.git ..\..\..\..\..\pkg\mod\github.com\golang\文件夹然后把sys重命名为[email protected]就编译成功了

zivenyang avatar Jun 18 '19 05:06 zivenyang

windows 平台下编译arm版本的源码包时报以下错误:

>set GO111MODULE=on
>go mod download
>go mod vendor
>SET CGO_ENABLED=0
>SET GOOS=windows
>SET GOARCH=arm
>go build -o service-center
# golang.org/x/sys/windows
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:24:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\dll_windows.go:25:6: missing function body
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2106:38: undefined: WSAData
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2346:51: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2360:50: undefined: Servent
..\..\..\..\..\pkg\mod\github.com\golang\[email protected]\windows\zsyscall_windows.go:2362:8: undefined: Servent

以下是我的go env

>go env
set GOARCH=arm
set GOBIN=
set GOCACHE=C:\Users\y00504233\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\y00504233\go;D:\Workspace\go-work
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set GOARM=5
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=C:\Users\y00504233\go\src\github.com\apache\servicecomb-service-center\servicecomb-service-center\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-marm -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Y00504~1\AppData\Local\Temp\go-build965999206=/tmp/go-build -gno-record-gcc-switches

请问一下该如何解决,谢谢~

好像是sys版本的问题,原来使用的是github.com\golang\[email protected],后来我git clone https://github.com/golang/sys.git ..\..\..\..\..\pkg\mod\github.com\golang\文件夹然后把sys重命名为[email protected]就编译成功了

@zivenyang 你这边有在“mod“目录中使用过 git clone 命令?

ChinX avatar Jun 18 '19 09:06 ChinX

GOPATH/pkg/mod 目录是go module 进行包管理的目录,和以前的vender目录一样,是go module工具自行管理的,不需要人工的介入(包括go.mod go.sum文件,以免引入不必要的麻烦)。

我刚查看了一下 Service-Center 的go.mod 文件中关于sys包的版本信息和你编译成功的版本信息是一致的:https://github.com/apache/servicecomb-service-center/blob/master/go.mod#L8

刚在自己机器试了一下,是可以直接编译arm版本包的

ChinX avatar Jun 18 '19 09:06 ChinX