【发布时间】:2017-09-22 11:36:17
【问题描述】:
我正在尝试根据指令 here 构建 OpenNN 库。但是之后
make opennn
我得到以下输出(不完整):
[2%] Built target tinyxml2
[4%] Building CXX object opennn/CMakeFiles/opennn.dir/variables.cpp.o
In file included from /home/wolfgang/Downloads/OpenNN/opennn/variables.h:32:0,
from /home/wolfgang/Downloads/OpenNN/opennn/variables.cpp:16:
/home/wolfgang/Downloads/OpenNN/opennn/vector.h: In member function ‘bool OpenNN::Vector<T>::Lillieforts_normality_test() const’:
/home/wolfgang/Downloads/OpenNN/opennn/vector.h:1144:20: error: ‘erfc’ is not a member of ‘std’
Fx = 0.5 * std::erfc((mean - (*this)[i])/(standard_deviation*std::sqrt(2)));
以上输出以
结尾make[3]: *** [opennn/CMakeFiles/opennn.dir/variables.cpp.o] Error 1
make[2]: *** [opennn/CMakeFiles/opennn.dir/all] Error 2
make[1]: *** [opennn/CMakeFiles/opennn.dir/rule] Error 2
make: *** [opennn] Error 2
我想我应该使用-std=c++11 或其他东西,但我不知道具体如何。我试图添加这一行
CXXFLAGS += -std=c++11
到Makefile,但它不起作用。
我不知道 cmake 和 make 什么。但是这些错误是由与旧的c++xx 不兼容引起的。
【问题讨论】:
-
当您添加
CXXFLAGS += -std=c++11时,错误是否会发生变化?您使用的是什么编译器和版本? -
添加标志后的输出相同。通常我使用 g++ 4.8.4。但在这里我没有明确使用 g++。我的意思是我所做的只是
cmake -DCMAKE_BUILD_TYPE=Release ..,然后是make opennn。 -
我假设您的代码中已经有
#include <cmath>,但 this issue 可能与您的代码相关。 -
您可能有兴趣找到一个不同于 c++ 标准库中的数学库,它太小了!如果你使用 error function,也许很快,你将需要 inverse error function,而这在
中甚至在 c++17 中也没有提供!!! -
你参考的地址github.com/orian/opennn网上找到的版本,你修改opennn的源码了吗?