C++将用RHEL4 32位编写的应用程序迁移到RHEL6 64位
C++ Migration of application written in RHEL4 32bit to RHEL6 64bit
我有一系列关于这方面的问题,我想让事情变得简单、概念化,并且可以在实践中尝试。
我的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构建本身中的问题和错误引起的。对多库的需求不断下降;随着时间的推移,它们的使用越来越少;他们得到的支持越来越少;没有人真的想浪费更多的时间来测试并确保它们仍然有效。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 从 MFC C++ 6.0 应用程序迁移到 VS 2005
- 我如何将Win32应用程序迁移到X64
- 如何将Borland C++5.02应用程序迁移到Windows 7
- 如果 DEP 处于活动状态,则迁移的应用程序崩溃
- 在 64 位上迁移 32 位应用程序时出现问题
- 这是为Android和iOS迁移C++应用程序的最简单方法
- C++将用RHEL4 32位编写的应用程序迁移到RHEL6 64位