在linux上构建gcc交叉编译器,我如何知道支持哪些“--target”以及指定它们的确切关键字?

在linux上构建gcc交叉编译器,我如何知道支持哪些“--target”以及指定它们的确切关键字?

我正在尝试构建 gcc 编译器来生成应该在 x86-64 机器上运行的可执行文件。我实际上在我的计算机上使用现有的 64 位 gcc 编译器。这是多余的,但我这样做是为了学习目的。

问题是,我不知道如何指定 --target 选项。我应该在那里输入什么?只需输入“x86-64”就可以吗?

如果我希望交叉编译器为 x86 机器生成可执行文件,并且应该在另一台 x86-64 位机器上运行以编译源代码,该怎么办?我应该使用什么关键字来设置目标和主机?

我想知道是否有任何 gcc 手册指定主机和目标机器支持的体系结构以及指定它们的正确命令。

答案1

要了解支持的目标架构,您应该查看configureconfig.sub在您尝试构建的任何 GCC 源中。您还需要匹配的 binutils 和 C 库;GCC 安装手册提供配置和构建编译器所涉及的步骤的详细信息。

除了架构之外,您还需要决定目标操作系统和库;因此,对于 x86_64 上具有 GNU C 库的 Linux,您可以使用--target=x86_64-linux-gnu.存在更短的别名,您可以运行config.sub以确定它们对应的内容:

$ src/config.sub x86_64-linux
x86_64-pc-linux-gnu

所以./configure --target=x86_64-linux相当于x86_64-linux-gnu, 相当于x86_64-pc-linux-gnu

配置和构建后,您将获得一个编译器,该编译器构建可以在配置的目标上运行的程序;编译器本身将在配置的主机上运行。一般来说,您应该只指定目标;它可以交叉构建交叉编译器(这称为加拿大十字),但如果您刚刚开始交叉编译,那么您应该暂时将其放在一边。

相关内容