若要在 biarch 結構上,為其他結構開發二進位程式,必須為第二個結構額外安裝相關程式庫。如果第二個結構是 32 位元結構,這些套件稱為 rpmname-32bit
或 rpmname-x86
(針對 ia64);如果第二個結構是 64 位元結構,則套件稱為 rpmname-64bit
。您還需要 rpmname-devel
套件的各個標頭和程式庫,以及 rpmname-devel-32bit
或 rpmname-devel-64bit
之第二個結構的開發程式庫。
例如,若要編譯一個使用 libaio 的程式,而所在系統的第二個結構是 32 位元結構 (x86_64 或 s390x),您需要以下 RPM:
32 位元執行期間套件
32 位元開發的標題和程式庫
64 位元執行期間套件
64 位元開發標題和程式庫
大部份開放原始碼程式使用的程式組態是以 autoconf 為基礎。若要使用 autoconf 為第二個結構設定程式,請覆寫 autoconf 的一般編譯器和連結器設定,方法是執行包含其他環境變數的 configure 程序檔。
以下範例參考第二個結構為 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