我想跑一个早期 Go 写的程序(时间在 2010 年 3 月,和 go 1+ 不兼容),但是找不到那个时候预编译的 binary,自己编译的话要不根本通不过编译,要不编译出来跑一个 hello world 都 segmentation fault,有什么途径可以获得这种 binary 吗?
1
ExplorerLog 2020-11-06 12:19:34 +08:00
自己去源代码编译?
https://go.googlesource.com/go/+refs |
2
user8341 2020-11-06 12:22:53 +08:00
连 Go 都已经变化那么大了吗?现在写的程序如何保证 10 年后可以运行呢?
|
3
alan0liang OP @ExplorerLog 我试着编译了,各种编译报错+segmentation fault
|
4
westoy 2020-11-06 12:30:25 +08:00 1
早期 go 生成的 binary 对 libc 强依赖吧 ,你还得用当时的系统......不过几个系统版本 10 年的源包地址都不维护了吧..........
|
5
TomatoAres 2020-11-06 12:45:19 +08:00
|
7
Aoang 2020-11-06 13:02:21 +08:00 via Android
@alan0liang 你用什么编译的,没有实现自举之前的 Golang 是需要用 C 去编译的
|
8
reus 2020-11-06 13:33:09 +08:00 1
go 自带 fix 命令,可以将代码转成 go1 兼容的,可能有用
|
9
alan0liang OP |
10
reus 2020-11-06 14:15:51 +08:00
@user8341 2012 年 go1.0 发布之后的 go 程序,到现在完全兼容。楼主的是 1.0 发布之前的,是不兼容的。但是 go 自带了一个 fix 命令,是可以将旧版本的 go 代码自动转换成 go1.0 兼容的代码的。
@alan0liang 只有 go1.0 的 fix 才支持转换,到 go1.1 就不支持了,所以要下载 go1.0 的 bin 。刚刚看到 1.1 的 release notes 里说的: https://golang.org/doc/go1.1#gofix |
11
kenzi 2020-11-06 18:43:28 +08:00
|