【问题标题】:Why do I not need to specify OS version when cross-compiling?为什么交叉编译时不需要指定操作系统版本?
【发布时间】:2021-06-09 09:09:17
【问题描述】:

前言:我的交叉编译代码经验很少,我主要是从 golang 背景开始的

我可以像这样交叉编译 golang GOOS=<OS> GOARCH=<architecture> go build <source-file>
操作系统可能是“linux”或“windows”之类的东西。 为什么我不需要指定哪个版本的 linux 或 windows(或其他)?当然,例如linux 多年来发生了变化,如果它依赖于它,我应该指定一个版本。

我想用另一种方式来表达这个问题是,如果我在我的 linux 机器上编译一些代码,它会在所有旧版本的 linux 上运行吗?肯定不会

一个相关问题:我想这里的操作系统是指内核意义上的操作系统,而不是更广泛意义上的操作系统,它有时用来表示整个 GNU+linux 系统等。

【问题讨论】:

  • 您不必指定版本,因为您无法交叉编译到旧操作系统,因为没有人使用旧操作系统,因为那会非常危险。这就是为什么没有选择 Windows 95 的标志。
  • @Jay - 如果我在我的 linux 机器上编译一些代码,它会在所有旧版本的 linux 上运行吗?当然不是 - 关于所有,您可能是对的,但您也可能会惊讶于它运行了多少旧版本甚至更多新版本。

标签: linux go compilation cross-compiling


【解决方案1】:

Go Wiki开始,支持的最低Linux内核(GOARCHamd64386)是:

2.6.23 或更高版本

所以基本上任何来自late 2007 onwards 的 Linux 发行版。

其他 Linux 架构(arm*mips*s390x)支持的内核版本可以在here找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多