C++将用RHEL4 32位编写的应用程序迁移到RHEL6 64位

C++ Migration of application written in RHEL4 32bit to RHEL6 64bit

本文关键字:迁移 应用程序 RHEL6 64位 将用 RHEL4 32位 C++      更新时间:2023-10-16

我有一系列关于这方面的问题,我想让事情变得简单、概念化,并且可以在实践中尝试。

我的C++应用程序有许多库,其中一些是第三方库,如boost、antlr、libxml2等。我有用-m32标志编译的32位库。

方法问题理想情况下,我希望能够通过在64位RHEL6操作系统上从32位复制来运行应用程序,但我发现它因分段故障而崩溃。需要对此进行单独的分析,我还没有完成。

第二种方法是使用所有32位库和32位编译器g++3.4.6,使用-m32在64位上编译应用程序。这编译得还可以。但我在boost多线程库中遇到了分段错误。需要进一步调查原因。

第三种方法是将64位重新编译为64位应用程序,这将是一种非常困难的方法,因为我也需要找到一些旧库的源代码。

我还可以采取其他方法吗?我的方法中是否遗漏了什么?

我能采取其他方法吗?我也错过了吗我的方法有什么问题吗?

您缺少了一个非常明显的功能:将您的应用程序移植并构建为本机64位应用程序。

在向本机64位体系结构过渡的过程中,您肯定会发现问题。但重要的是要理解,这些问题将是代码中真正的错误,到目前为止,在最初的32位平台上,这些错误一直被隐藏或未被检测到。这将是一个发现并修复它们的绝佳机会。

去过那里,做了那件事。

迁移过程完成后,您将得到一个本机64位应用程序,这是获得长期支持的最佳情况。碰巧的是,在本周的新闻中,流行的Linux发行版宣布完全停止对32位的支持。32位即将退出。在某个时刻,您将不再可以选择运行32位应用程序(因为如果没有本机32位Linux发行版,就没有任何理由构建multilib 64/32版本)。最好做好准备,在有时间有序迁移到64位的时候投入时间,然后发现地毯已经从你的脚下拉开,你的下一个Linux平台将只支持64位,而你的关键任务应用程序还没有准备好64位。

我也不会感到惊讶的是,您在multilib兼容性库中遇到的问题是由multilib构建本身中的问题和错误引起的。对多库的需求不断下降;随着时间的推移,它们的使用越来越少;他们得到的支持越来越少;没有人真的想浪费更多的时间来测试并确保它们仍然有效。