go 语言交叉编译后无法运行

2022-02-21 12:04:55 +08:00
 heqichang

最近又重新做一个 go 项目,但是我本地是 mac ,放阿里云 linux 还是没法运行,这是我很早以前在 sf 上的一个提问:go build 之后的文件放服务器上不能运行,cpu 不同导致?,当时通过 docker 打包在容器里去运行,但是没人解释出根本的原因。

编译命令:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o test main.go

编译的代码也很简单:

func main() {
	fmt.Println("hello world")
}
4457 次点击
所在节点    Go 编程语言
31 条回复
zsj950618
2022-02-21 18:45:36 +08:00
gamexg
2022-02-21 18:50:20 +08:00
我碰到过非常老的 linux 不能运行交叉编译的文件,印象是依赖库问题。
不过项目本身会有韵味那边在线上环境再次编译才会上线,运行没问题,所以没在研究。
adoal
2022-02-21 19:27:34 +08:00
试试老版本的 go
以前我在新系统里非交叉编译的拿到 centos5 上不能运行,查了一下因为 kernel API 变动而不兼容,于是降级 go 版本搞定
sakishum
2022-02-21 19:30:25 +08:00
楼主,之前碰到过类似问题,参见
sakishum
2022-02-21 19:30:55 +08:00
heqichang
2022-02-22 08:50:02 +08:00
@zhangsanfeng2012 嗯,FTP 传的
heqichang
2022-02-22 08:53:12 +08:00
@zsj950618
@sakishum 感谢提供的链接
eudore
2022-02-22 08:53:55 +08:00
缺少静态编译参数
zhangsanfeng2012
2022-02-22 08:57:48 +08:00
@heqichang 是不是用 ascii mode 传的,换成 binary mode 上传试试
heqichang
2022-02-22 09:16:51 +08:00
@zhangsanfeng2012 我擦,结案了,可以运行了,还真是 FTP 的鬼,我用的 FileZilla ,设置里如果传的文件没有扩展自动转 ascii ,所以文件被损坏了。我怎么也没想到是它是它是它 :doge
CEBBCAT
2022-02-22 20:28:41 +08:00
@heqichang 你…… hash 都不对比一下的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX