Linux环境构build32位和64位应用程序(C ++)

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

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

主要问题是图书馆。 我不知道如何进行…我怎样才能确保链接器使用32位版本的简单库,如ldl,lz,lrt? 我知道我必须安装所有的32位版本,然后configuration链接器path。

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

谢谢您的帮助!

具有64位版本的大多数Linux版本也都是32位版本,几乎所有库都可用,所以您只需将相关的32位库与64位版本库并行安装即可。 在大多数情况下,路径的配置与纯64位或32位构建没有区别。 可能有一些图书馆有问题,但你真的需要去寻找那些。 所有的主流数据包都将有32位和64位库版本的库同时安装。

当谈到“哪个libc”等,这是一个更难的问题,因为它将真正取决于你的客户在他们的机器上 – 而且你不能指定他们应该使用Debian,RedHat或SuSE – 他们会非常强烈地使用他们正在使用的任何东西。 使用“太旧”的库与使用“太新”库一样糟糕。 通常的解决方案是构建多个版本,一个用于选定的RedHat版本(并且应该使用几个更新/旧版本,以及相同范围的Fedora版本),一个Debian版本,以及一个SuSE版本,可能还有一两个发行版。

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