2013-07-12 156 views
6

我正在寻找如何为需要针对32位和64位体系结构编译的Linux应用程序设置构建计算机的建议。Linux环境构建32位和64位应用程序(C++)

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

主要问题在于库。我不确定如何继续......我如何确保链接器使用简单库的32位版本,例如ldl,lz,lrt?我知道我必须安装它们的32位版本,然后配置链接器路径。

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

感谢您的帮助!

+4

只需拥有不同架构的虚拟机可能会更容易,然后就不会出现混淆。另外,我认为你也可以在你的64位Linux中有一个32位的chroot,并且从chroot内部构建你的32位版本。虽然我不确定。 –

+0

谢谢!我正在考虑设置多个虚拟机的替代方案。 –

回答

2

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

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

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

+0

感谢您的支持,真的有帮助! –