如何解决log4cxx中未声明“内存”错误的问题

时间:2019-05-22 20:58:57

标签: log4cxx

我正在尝试从x86_64机器为ARM交叉编译log4cxx。编译期间,出现错误'memmove' was not declared in this scope

我正在使用Linaro GCC交叉编译器版本4.9.4。为了防止交叉编译出现其他问题,我将CPPFLAGS=-DAPR_IOVEC_DEFINED赋予configure命令。这是从Apache Logging Services website下载的log4cxx源的0.10.0版本。

完整的错误消息如下:

inputstreamreader.cpp:66:64: error: 'memmove' was not declared in this scope
              memmove(buf.data(), buf.current(), buf.remaining());

我知道“未声明”错误通常表示不包括带有声明的文件,但是似乎不太可能在已发布的代码中出现问题。

1 个答案:

答案 0 :(得分:0)

此错误是由于缺少文件中的包含路径所致,尽管log4cxx Git存储库中的提交消息表明该错误仅在某些版本的GCC编译器中发生。

要解决该错误,请在src/main/cpp/inputstreamreader.cpp中添加以下内容:

#include <cstdio>
#include <cstring>

这些包含项包含在{4} log4cxx Github存储库中的most recent version of the file中。自0.10.0版本以来,这些包含项的添加是对该文件的唯一非格式更改。在文件的commit history中,由于缺少这些内容,提到了GCC 4.3和4.4的问题。

我还遇到了来自log4cxx中其他文件的其他not declared错误。它们可以以相同的方式修复,并且已在Github存储库中修复。