首页 > 解决方案 > 对`boost::filesystem::detail::copy_file 的未定义引用

问题描述

我正在尝试在 CentOS 7 机器上安装 Nova 和 HoneyD,但我发现自己遇到了问题。

问题是,在我使用命令 make 后,出现以下错误:

Config.cpp:(.text+0xa2d6): undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'
../../NovaLibrary/Release//libNovaLibrary.a(NovaUtil.o): In function `Nova::RecursiveDirectoryCopy(boost::filesystem::path const&, boost::filesystem::path const&, bool)':
NovaUtil.cpp:(.text+0x25a4): undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'
collect2: error: ld returned 1 exit status
make[2]: *** [novad] Error 1
make[2]: Leaving directory `/usr/share/Nova/Novad/Release'
make[1]: *** [novad-release] Error 2
make[1]: Leaving directory `/usr/share/Nova'
make: *** [release] Error 2

我该如何解决这个问题?

标签: boostmakefileundefined-referencehoneypot

解决方案


我找到了自己问题的解决方案。

解决方案是编辑文件 Config.cpp 并替换该行:

#include <boost/filesystem.hpp>

对于以下内容:

#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#undef BOOST_NO_CXX11_SCOPED_ENUMS

在我这样做之后,我停止了错误。


推荐阅读