在 64 位系统上构建 32 位

thw*_*hwd 6 64bit 32bit cross-compilation configure

我正在尝试在 x86_64 Ubuntu 11.04 上为 i386(32 位)构建 PHP 内存缓存扩展(v2.2.6)。

./configure默认情况下使用 config.guess(x86_64-unknown-linux-gnu在我的系统上输出),但我想覆盖它。

我将如何继续?

Gil*_*il' 7

交叉编译需要两件东西:一个可以为目标架构生成代码的编译器,以及用于目标架构的静态库 ( *.a)。至少安装libc6-dev-i386 安装 libc6-dev-i386包,可能还有其他lib32.*-dev。在libc6-dev-i386还拉动在所需的交叉编译了gcc的部件gcc-multilib 安装 gcc-multilib. 然后通过将-m32标志传递给CFLAGS变量来告诉 gcc 为 i386 编译。

sudo apt-get install libc6-dev-i386 lib32ncurses5-dev … # whatever 32-bit libraries you need
export CFLAGS='-m32'
./configure …
Run Code Online (Sandbox Code Playgroud)

如果您没有找到所需的所有库,在chroot 中安装 32 位 Ubuntu 可能会更容易。Ubuntu 提供dchroot 安装 dchroot来自Debian buildd project,这使得运行 chroot 系统变得容易。使用debootstrap 安装 debootstrap执行安装。Ubuntu 论坛上有一个看起来很合理的dchroot 教程