![在 64 位系统上构建 32 位](https://linux22.com/image/1657/%E5%9C%A8%2064%20%E4%BD%8D%E7%B3%BB%E7%BB%9F%E4%B8%8A%E6%9E%84%E5%BB%BA%2032%20%E4%BD%8D.png)
我正在尝试在 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
包,可能还有其他
lib32.*-dev
包。它还libc6-dev-i386
引入了交叉编译所需的 gcc 组件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 船舶根目录 来自Debian 构建项目,这使得运行 chroot 系统变得容易。使用反引导程序
执行安装。有一个看起来合理的Ubuntu 论坛上的 dchroot 教程。