macos - 戈朗 :alpine docker container on macOS throws "invalid symbol version for go.string" when importing gin-gonic/gin

标签 macos docker go alpine-linux

我正在尝试在 golang:alpine docker 镜像上运行一个非常简单的 go/gin 程序。这无法运行/构建。

运行容器:

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 重置为出厂默认设置后问题得到解决。

Reset Docker

关于macos - 戈朗 :alpine docker container on macOS throws "invalid symbol version for go.string" when importing gin-gonic/gin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49699092/

相关文章:

ios - Xcode:仅当 PKI key 插入时,才能在钥匙串(keychain)中找到指定的项目

android - 编译 irrlicht 时出错 - android 端口 (Mac OSX)

macos - 如何使用 Cocoa 或其他任何工具在 Mac OS X 10.6 上同时使用 USB 扬声器和内置音频扬声器?

node.js - 为 node.js 应用程序构建 docker 镜像在代理之后失败

opencv - 如何将 Cloud Vision API 导出模型与 Open CV 程序结合使用?

macos - 10.11 NSCollectionView - 动态确定单元格大小

bash - 寻找匹配的 `'时出现意外的EOF

docker - 将Docker容器内的多个目录持久化为单个卷

json - Golang & mgo : How to create a generic entity with common fields like _id, 创建时间,最后更新

windows - 如何在GO中实现跨平台文件锁定