Biarch 平台上的软件编译

若要在 Biarch 体系结构上为其他体系结构开发二进制代码,则必须另外安装用于第二个体系结构的各个库。 这些包称为 rpmname-32bitrpmname-x86(针对 ia64,如果第二个体系结构为 32 位体系结构),或者 rpmname-64bit(如果第二个体系结构为 64 位体系结构)。您还需要 rpmname-devel 包中各自的报头和库以及 rpmname-devel-32bitrpmname-devel-64bit 中用于第二个体系结构的开发库。

例如,要在第二个体系结构为 32 位体系结构的系统(x86_64 或 System z)上编译使用 libaio 的程序,则需要以下 RPM:

libaio-32bit

32 位运行时包

libaio-devel-32bit

32 位开发的标题和库

libaio

64 位运行时包

libaio-devel

64 位开发的标题和库

大多数开放源代码程序使用基于 autoconf 的程序配置。 若要使用 autoconf 配置第二个体系结构的程序,请通过运行带有附加环境变量的 configure 脚本覆盖 autoconf 的常规编译器和链接器设置。

以下示例涉及使用 x86 作为第二个体系结构的 x86_64 系统。第二个体系结构为 ppc 的 ppc64 的示例类似。该示例不适用于不能建立 32 位包的 ia64。

  1. 使用 32 位编译器:

    CC="gcc -m32"
  2. 指示链接器处理 32 位对象(总是使用 gcc 作为链接器前端):

    LD="gcc -m32"
  3. 设置组装器生成 32 位对象:

    AS="gcc -c -m32"
  4. 确定 libtool 等的库是否来自 /usr/lib

    LDFLAGS="-L/usr/lib"
  5. 确定库是否储存在 lib 子目录中:

    --libdir=/usr/lib
  6. 确定是否使用了 32 位 X 库:

    --x-libraries=/usr/lib/xorg

并不是每个程序都需要这些变量。 根据各个程序对这些变量进行调整。

在 x86_64、ppc64 或 System z 上编译本机 32 位应用程序的示例 configure 调用可以如下所示:

CC="gcc -m32"            \
LDFLAGS="-L/usr/lib;"  \
        .configure       \
          --prefix=/usr  \
          --libdir=/usr/lib
make
make install