若要在 Biarch 体系结构上为其他体系结构开发二进制代码,则必须另外安装用于第二个体系结构的各个库。 这些包称为 rpmname-32bit 或 rpmname-x86(针对 ia64,如果第二个体系结构为 32 位体系结构),或者 rpmname-64bit(如果第二个体系结构为 64 位体系结构)。您还需要 rpmname-devel 包中各自的报头和库以及 rpmname-devel-32bit 或 rpmname-devel-64bit 中用于第二个体系结构的开发库。
例如,要在第二个体系结构为 32 位体系结构的系统(x86_64 或 s390x)上编译使用 libaio 的程序,则需要以下 RPM:
32 位运行时包
32 位开发的标题和库
64 位运行时包
64 位开发的标题和库
大多数开放源代码程序使用基于 autoconf 的程序配置。 若要使用 autoconf 配置第二个体系结构的程序,请通过运行带有附加环境变量的 configure 脚本覆盖 autoconf 的常规编译器和链接器设置。
以下示例涉及使用 x86 作为第二个体系结构的 x86_64 系统。使用 s390 作为第二个体系结构的 s390x 或使用 ppc 作为第二个体系结构的 ppc64 的相关示例是类似的。该示例不适用于未建立 32 位包的 ia64。
![]() | |
使用 s390 作为第二个体系结构时,必须使用 | |
使用 32 位编译器:
CC="gcc -m32"
指示链接器处理 32 位对象(总是使用 gcc 作为链接器前端):
LD="gcc -m32"
设置组装器生成 32 位对象:
AS="gcc -c -m32"
确定 libtool 等的库是否来自 /usr/lib:
LDFLAGS="-L/usr/lib"
确定库是否储存在 lib 子目录中:
--libdir=/usr/lib
确定是否使用了 32 位 X 库:
--x-libraries=/usr/X11R6/lib/
并不是每个程序都需要这些变量。 根据各个程序对这些变量进行调整。
在 x86_64、ppc64 或 s390x 上编译本机 32 位应用程序的示例 configure 调用可以如下所示:
CC="gcc -m32" \
LDFLAGS="-L/usr/lib;" \
.configure \
--prefix=/usr \
--libdir=/usr/lib
make
make install