64bit

在 64 位系統上建構 32 位

  • January 31, 2021

我正在嘗試在我的 x86_64 Ubuntu 11.04 上為 i386(32 位)建構 PHP 記憶體記憶體擴展(v2.2.6)。

./configure預設使用 config.guess (x86_64-unknown-linux-gnu在我的系統上輸出),但我想覆蓋它。

我將如何進行?

您需要兩件東西來交叉編譯:一個可以為目標架構生成程式碼的編譯器,以及用於目標架構的靜態庫 ( *.a)。至少安裝軟體包,可能還有其他軟體包。還引入了包中交叉編譯所需的gcc組件。然後通過變數傳遞標誌來告訴 gcc 為 i386 編譯。libc6-dev-i386 安裝 libc6-dev-i386lib32.*-devlibc6-dev-i386gcc-multilib 安裝 gcc-multilib-m32``CFLAGS

sudo apt-get install libc6-dev-i386 lib32ncurses5-dev … # whatever 32-bit libraries you need
export CFLAGS='-m32'
./configure …

如果您沒有找到所需的所有庫,那麼在chroot中安裝 32 位 Ubuntu 可能會更容易。Ubuntu從Debian buildd 項目中提供了dchroot ,這使得執行 chroot 系統變得容易。使用debootstrap執行安裝。Ubuntu 論壇上有一個看起來很合理的dchroot 教程。安裝 dchroot 安裝引導程序

引用自:https://unix.stackexchange.com/questions/12801