将 GCC 从 4.1.2 迁移到 6.2.0,以及从 RHEL 5.5 迁移到 CentOS 7.2

Migrating GCC from 4.1.2 to 6.2.0 and from RHEL 5.5 to CentOS 7.2

本文关键字:迁移 RHEL CentOS GCC      更新时间:2023-10-16

我有 GCC 4.1.2 的 RHEL,我的C++代码正在按预期编译。但是当我尝试使用 GCC 7.2.2 在 CentOS 6.2.0 上编译时,相同的代码失败并显示以下错误:

compiling UpcSummarization.o ...
UpcSummarization.cpp: In member function âvoid UpcSummarization::LoadUpcList(std::__cxx11::string)â:
UpcSummarization.cpp:480:40: error: âmemsetâ was not declared in this scope
         memset(&pBuffer, 0, sizeof(100));
                                        ^

我包括以下头文件:

string

如果我包括string.hcstring它会通过。

知道如何使其仅与包含文件一起使用string吗?迁移代码库以包含string.hcstring不是一种选择

编辑

是的,它是字符串。

也许我应该把它表述为第二种选择,而不是一个选项

在开始代码迁移之前,我需要排除编译器选项的任何可能性,以使其按原样工作。

如果需要,我可以安装额外的库并更改其编译方式。实际上没有编辑代码。

我包括以下头文件: 刺痛

字符串?

知道如何让它只与字符串包含文件一起工作吗?

您可以创建一个虚拟string文件,并将其与其他标头一起存储。例如,在你做的string里面

#include <string.h>

迁移代码库以包含 string.h 或 cstring 不是一个选项

请注意,如果您无法将代码修改到如此小的程度,则很可能无法将代码移植到 6.2。 4.1 和 6.2 相隔 10 年,因此您的代码肯定需要更改/修复才能与较新的编译器一起使用。