我正在尝试构建 gcc 编译器来生成应该在 x86-64 机器上运行的可执行文件。我实际上在我的计算机上使用现有的 64 位 gcc 编译器。这是多余的,但我这样做是为了学习目的。
问题是,我不知道如何指定 --target 选项。我应该在那里输入什么?只需输入“x86-64”就可以吗?
如果我希望交叉编译器为 x86 机器生成可执行文件,并且应该在另一台 x86-64 位机器上运行以编译源代码,该怎么办?我应该使用什么关键字来设置目标和主机?
我想知道是否有任何 gcc 手册指定主机和目标机器支持的体系结构以及指定它们的正确命令。
答案1
要了解支持的目标架构,您应该查看configure
和config.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
。
配置和构建后,您将获得一个编译器,该编译器构建可以在配置的目标上运行的程序;编译器本身将在配置的主机上运行。一般来说,您应该只指定目标;它是可以交叉构建交叉编译器(这称为加拿大十字),但如果您刚刚开始交叉编译,那么您应该暂时将其放在一边。