我尝试将 mlpack 库添加到 gem5 以进行实验。我已经在我的 Ubuntu 18.04 系统上成功安装了 mlpack 库。然后在我的一个模块中添加了以下内容:
#include <mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp>
#include <mlpack/prereqs.hpp>
当到达 mlpack 并在 gem5 logging.hh 中出现奇怪错误时,构建失败:
/usr/include/mlpack/core/util/prefixedoutstream.hpp: In constructor 'mlpack::util::PrefixedOutStream::PrefixedOutStream(std::ostream&, const char*, bool, bool)':
build/RISCV/base/logging.hh:155:36: error: expected identifier before 'do'
#define exit_message(logger, ...) do { \
^
build/RISCV/base/logging.hh:155:36: error: expected '{' before 'do'
错误行所在的 logging.hh 中的代码片段:
#define exit_message(logger, ...) do { \
base_message(logger, __VA_ARGS__); \
logger.exit_helper(); \
} while (0)
似乎问题是由于 gem5 中定义的宏“致命”引起的:logging.hh 文档
这个问题仍未解决,因为可能有解决方法。我已经在 gem5 邮件列表中发布了这个问题。