如何修复 log4cxx 中未声明的“memmove”错误

亚当·德尔·罗索

我正在尝试从 x86_64 机器为 ARM 交叉编译 log4cxx。在编译过程中,有一个错误说'memmove' was not declared in this scope.

我使用的是 Linaro GCC 交叉编译器版本 4.9.4。为了防止交叉编译出现不同的问题,我CPPFLAGS=-DAPR_IOVEC_DEFINED使用了 configure 命令。这是 log4cxx 源的 0.10.0 版,从Apache Logging Services 网站下载

完整的错误信息如下:

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

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

亚当·德尔·罗索

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

要修复错误,请将以下包含添加到src/main/cpp/inputstreamreader.cpp

#include <cstdio>
#include <cstring>

这些包含存在于文件的最新版本中,可在 log4cxx Github 存储库中找到。这些包含的添加是自 0.10.0 版以来对文件的唯一非格式更改。文件提交历史记录中,提到了 GCC 4.3 和 4.4 由于缺少包含而导致的问题。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章