我正在寻找有关如何为需要针对32位和64位架构进行编译的Linux应用程序设置构建机器的建议.
据我所知,我需要一个64位操作系统,它可以构建32和64.添加-m32标志将产生32的正确输出,这里没有挑战.
主要问题是图书馆.我不确定如何继续......我怎样才能确保链接器使用32位版本的简单库,例如ldl,lz,lrt?我知道我必须安装所有这些版本的32位版本,然后配置链接器路径.
另一个问题是编译器,链接器,libc等版本.我应该使用最旧的版本,以确保所有客户端都能正常运行吗?我的意思是,如果我在最新的Debian中构建应用程序,在较旧的Debian中,它将无法正常工作,对吗?
谢谢您的帮助!
大多数具有 64 位版本的 Linux 版本也可以进行 32 位版本,并且几乎所有库都可用于这两种版本,因此您所需要做的就是与 64 位库并行安装相关的 32 位库。在大多数情况下,路径的配置与纯 64 位或 32 位构建没有什么不同。可能有一些库存在问题,但您确实需要寻找这些库。所有主流数据包都将具有可同时安装的 32 位和 64 位库版本的库。
当谈到“哪个 libc”等时,这是一个更困难的问题,因为这实际上取决于您的客户在他们的机器上有什么 - 并且您不太可能决定他们应该使用 Debian、RedHat 或 SuSE 之一- 他们会对使用他们正在使用的任何东西有非常强烈的感觉。使用“太旧”的库与使用“太新”的库一样糟糕。通常的解决方案是构建多个版本,一个用于选定的 RedHat 版本(通常应该与较新/较旧的版本以及同一范围内的 Fedora 版本一起使用),一个 Debian 版本,以及SuSE 版本,也许还有一两个发行版。
是的,到那时,您可能想要设置一台带有一些虚拟机的构建机器,这样您就不必拥有 3、5 或 12 台物理机。