golang:alpine docker macOS 上的容器在导入 gin-gonic/gin 时抛出 "invalid symbol version for go.string"
golang:alpine docker container on macOS throws "invalid symbol version for go.string" when importing gin-gonic/gin
我正尝试在 golang:alpine docker 图像上 运行 一个非常简单的 go/gin 程序。这无法 run/build.
运行容器:
docker run -it --rm golang:1.10.1-alpine sh
在容器中粘贴:
apk update && apk add git gcc musl-dev
go get github.com/gin-gonic/gin
cat <<EOT > src/main.go
package main
import _ "github.com/gin-gonic/gin"
func main() {
}
EOT
go run src/main.go
错误:
# command-line-arguments
2018/04/06 18:07:33 invalid symbol version for "go.string.\"aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a3855\xdb\x0f\x849\x0e\x00\x00H\x8b[\bH\x83\xfb\x01\x0f\x8f\x17\r\x00\x00H\x8bH H\x85\xc9\x0f\x84\x01": -7
主机:macOS High Sierra 10.13.3, MacBook Pro Mid 2014, Intel i5
Docker版本:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:32 2018
OS/Arch: linux/amd64
Experimental: false
这 在 golang/stretch 图像上没有错误,但是:
✗ dk run -it --rm golang:1.10.1-stretch bash 11:24AM
root@5d98f42504c2:/go# go get github.com/gin-gonic/gin
root@5d98f42504c2:/go#
root@5d98f42504c2:/go# cat <<EOT > src/main.go
> package main
> import _ "github.com/gin-gonic/gin"
> func main() {
> }
> EOT
root@5d98f42504c2:/go#
root@5d98f42504c2:/go# go run src/main.go
root@5d98f42504c2:/go#
alpine 可能出了什么问题?任何建议表示赞赏。
更多信息
禁用 CGO 时出现同样的错误。
这是构建时失败,使用 -x 选项时失败:
EOF
mkdir -p $WORK/b001/exe/
cd .
/usr/local/go/pkg/tool/linux_amd64/link
-o $WORK/b001/exe/a.out
-importcfg $WORK/b001/importcfg.link
-buildmode=exe
-buildid=UZcMyOX9lILP9hahS-FF/kCN0nlKO7qaS5D1mwkHf/i8lsdHfkhJNsud-tI68Q/UZcMyOX9lILP9hahS-FF
-extld=gcc /root/.cache/go-build/55/55d1e3d2979a75ff5a13bc75c855482f90c32615d3b9e9d42ed096051efec200-d
# command-line-arguments
2018/04/06 21:28:17 invalid symbol version for "go.string.\"aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e0
82542a3855\xdb\x0f\x849\x0e\x00\x00H\x8b[\bH\x83\xfb\x01\x0f
\x8f\x17\r\x00\x00H\x8bH H\x85\xc9\x0f\x84\x01": -7
我将 docker 重置为出厂默认设置后问题得到解决。
我正尝试在 golang:alpine docker 图像上 运行 一个非常简单的 go/gin 程序。这无法 run/build.
运行容器:
docker run -it --rm golang:1.10.1-alpine sh
在容器中粘贴:
apk update && apk add git gcc musl-dev
go get github.com/gin-gonic/gin
cat <<EOT > src/main.go
package main
import _ "github.com/gin-gonic/gin"
func main() {
}
EOT
go run src/main.go
错误:
# command-line-arguments
2018/04/06 18:07:33 invalid symbol version for "go.string.\"aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a3855\xdb\x0f\x849\x0e\x00\x00H\x8b[\bH\x83\xfb\x01\x0f\x8f\x17\r\x00\x00H\x8bH H\x85\xc9\x0f\x84\x01": -7
主机:macOS High Sierra 10.13.3, MacBook Pro Mid 2014, Intel i5
Docker版本:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:32 2018
OS/Arch: linux/amd64
Experimental: false
这 在 golang/stretch 图像上没有错误,但是:
✗ dk run -it --rm golang:1.10.1-stretch bash 11:24AM
root@5d98f42504c2:/go# go get github.com/gin-gonic/gin
root@5d98f42504c2:/go#
root@5d98f42504c2:/go# cat <<EOT > src/main.go
> package main
> import _ "github.com/gin-gonic/gin"
> func main() {
> }
> EOT
root@5d98f42504c2:/go#
root@5d98f42504c2:/go# go run src/main.go
root@5d98f42504c2:/go#
alpine 可能出了什么问题?任何建议表示赞赏。
更多信息
禁用 CGO 时出现同样的错误。
这是构建时失败,使用 -x 选项时失败:
EOF
mkdir -p $WORK/b001/exe/
cd .
/usr/local/go/pkg/tool/linux_amd64/link
-o $WORK/b001/exe/a.out
-importcfg $WORK/b001/importcfg.link
-buildmode=exe
-buildid=UZcMyOX9lILP9hahS-FF/kCN0nlKO7qaS5D1mwkHf/i8lsdHfkhJNsud-tI68Q/UZcMyOX9lILP9hahS-FF
-extld=gcc /root/.cache/go-build/55/55d1e3d2979a75ff5a13bc75c855482f90c32615d3b9e9d42ed096051efec200-d
# command-line-arguments
2018/04/06 21:28:17 invalid symbol version for "go.string.\"aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e0
82542a3855\xdb\x0f\x849\x0e\x00\x00H\x8b[\bH\x83\xfb\x01\x0f
\x8f\x17\r\x00\x00H\x8bH H\x85\xc9\x0f\x84\x01": -7
我将 docker 重置为出厂默认设置后问题得到解决。