Linux环境下构建32位和64位应用程序(C++)

Linux environment to build 32 and 64-bit application (C++)

本文关键字:应用程序 C++ 64位 环境 构建 32位 Linux      更新时间:2023-10-16

我正在寻找关于如何为需要为32位和64位体系结构编译的Linux应用程序设置构建机器的建议。

据我所知,我需要一个64位操作系统,它可以构建32和64。添加-m32标志将为32产生正确的输出,这里没有任何挑战。

主要问题是图书馆。我不知道该怎么办。。。如何确保链接器使用32位版本的简单库,如ldl、lz、lrt?我知道我必须安装所有这些的32位版本,然后配置链接器路径。

另一个问题是编译器、链接器、libc等的版本。为了确保所有客户端都能正常运行,我应该使用最旧的版本吗?我的意思是,如果我在最新的Debian中构建应用程序,在旧的Debian中将无法正常工作,对吗?

谢谢你的帮助!

大多数具有64位构建的Linux版本也会生成32位构建,并且几乎所有库都可用于这两个版本,因此您所需要做的就是将相关的32位库与64位库并行安装。在大多数情况下,路径的配置与纯64位或32位构建没有什么不同。可能有一些库存在问题,但您确实需要查找这些库。所有主流数据包都将同时安装32位和64位库版本的库。

当谈到"哪一个libc"等时,这是一个更困难的问题,因为这实际上取决于你的客户在他们的机器上有什么——你不太可能规定他们应该使用Debian、RedHat或SuSE中的一个——他们会对使用他们正在使用的任何东西感到非常强烈。使用"太旧"的库和使用"太新"的库一样糟糕。通常的解决方案是构建多个版本,一个用于选定的RedHat版本(通常需要几个步骤的更新/旧版本,以及相同范围内的Fedora版本),一个Debian版本和一个SuSE版本,可能还有一到两个发行版。

是的,在这一点上,你可能想建立一个有几个虚拟机的构建机器,这样你就不必有3、5或12个物理机器。