2

我在How do I cross-compile C code on Windows for a binary to also be run on Unix (Solaris/HPUX/Linux) 上看到了关于交叉编译器的回复?

我想知道如何在 x86 机器上为 SPARC 编译 Y?我在哪里可以找到一个好的交叉编译器?我还需要为 HP OS 编译。

4

1 回答 1

6

gcc 完全有能力做到这一点。Sun 的编译器可能有能力,但我更熟悉 gcc。首先,您应该熟悉构建 gcc,并确定您是否只需要 C 编译器或是否需要 C++ 或其他语言。

为您所在的主机构建 gcc 后,您可以重新构建 gcc 以包含您想要交叉编译的目标机器的目标。

在构建交叉编译器时,您必须正确的三件事是构建、主机和目标。

  • build:您正在构建的机器
  • 主机:您正在为其构建的机器
  • 目标:以及 GCC 将为其生成代码的机器

对于交叉编译器,构建和主机将相同,目标将不同。例如,下面是如何告诉编译器构建一个编译器以从 Solaris x86 交叉编译到 Solaris Sparc:

./configure --build=x86_64-sun-solaris2.10 --host=x86_64-sun-solaris2.10 --target=sparc-sun-solaris2.10

然后,您可以为需要交叉编译的每个目标构建额外的编译器。

在同时运行这两种版本的平台上编译 32 位和 64 位可执行文件非常容易。其他任何事情都会有点棘手。Mac 上的 gcc 由多个目标构建而成,Apple 让为多个平台创建二进制文件变得非常容易。所有 iPhone 应用程序都在 x86 上编译并以 ARM 处理器为目标。如果您可以为您想要的目标构建编译器,那么交叉编译通常很容易做到。

于 2010-03-13T15:00:16.057 回答