在 64 位系统上构建 32 位

在 64 位系统上构建 32 位

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

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

我该如何进行?

答案1

交叉编译需要两个东西:可以为目标体系结构生成代码的编译器,以及*.a目标体系结构的静态库 ( )。至少安装libc6-dev-i386 安装 libc6-dev-i386包,可能还有其他lib32.*-dev。它还libc6-dev-i386引入了交叉编译所需的 gcc 组件gcc-multilib包裹 安装 gcc-multilib。然后-m32通过变量传递标志来告诉 gcc 编译 i386 CFLAGS

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

如果您没有找到所需的所有库,那么在 Linux 中安装 32 位 Ubuntu 可能会更容易。chroot。 Ubuntu 船舶根目录 安装 dchroot来自Debian 构建项目,这使得运行 chroot 系统变得容易。使用反引导程序 安装debootstrap执行安装。有一个看起来合理的Ubuntu 论坛上的 dchroot 教程

相关内容