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

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

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

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

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

答案1

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

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

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

跑步32 位二进制文​​件,您需要启用 i386 的多架构支持:

sudo dpkg --add-architecture i386
sudo apt-get update

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

相关内容