如何在 64 位 Debian 上构建和运行 32 位软件?

Roe*_*ven 4 64bit development debian 32bit x86

我正在研究开发一个 C++ 程序,它需要一个专有的 32 位库,并且应该在 64 位 Debian(jessie、amd64)上运行。我假设我需要创建一个 32 位可执行文件才能使用该 32 位库(或者有没有办法从 64 位可执行文件中使用该库?)

如何在 64 位 Debian 上构建我的程序?还是我应该使用 32 位 Debian 机器来构建它,然后再转移到 64 位 Debian?

我通常使用 cmake,如果这有什么不同的话。

Ste*_*itt 8

是的,要使用 32 位库,您需要创建一个 32 位二进制文​​件。

在 amd64 上的 Debian 8 上,您可以使用gcc-multilib(对于 C)或g++-multilib(对于 C++)和 GCC 的-m32选项构建 32 位二进制文​​件。

使用 CMake,我想添加-m32到标志就足够了。可以在单个项目中为 32 位和 64 位构建设置 CMake,但它相当复杂;见rrCMakeLists.txt一个详细的例子。

运行32 位二进制文​​件,您需要为 i386 启用多架构支持:

sudo dpkg --add-architecture i386
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

然后安装适当的库,从libc6:i386和开始libstdc++6:i386