Canot编译使用boost的odeint的C ++

我在Ubuntu 12.04上,并且已经在/ usr / include中有了一些提升。 我做了一个

sudo apt-get install libboost-all-dev 

并且也安装了很多文件。 我不想删除这个提升并从源代码安装,因为其他几个软件包依赖于Ubuntu的版本。 这是我想要运行的示例代码:

 #include <iostream> #include <boost/numeric/odeint.hpp> using namespace std; using namespace boost::numeric::odeint; typedef vector< double > state_type; const double sigma = 10.0; const double R = 28.0; const double b = 8.0 / 3.0; void lorenz( state_type &x , state_type &dxdt , double t ) { dxdt[0] = sigma * ( x[1] - x[0] ); dxdt[1] = R * x[0] - x[1] - x[0] * x[2]; dxdt[2] = x[0]*x[1] - b * x[2]; } int main() { const double dt = 0.01; state_type x(3); x[0] = 1.0 ; x[1] = 0.0 ; x[2] = 0.0; stepper_euler< state_type > stepper; stepper.adjust_size( x ); double t = 0.0; for( size_t oi=0 ; oi<10000 ; ++oi,t+=dt ) { stepper.do_step( lorenz , x , t , dt ); cout << x[0] << " " << x[1] << " " << x[2] << endl; } } 

ON先编译g++ -o test test.cpp ,它抛出一个错误/usr/include/boost/numeric/odeint.hpp permission denied

所以我改变了recursion使用所有odeint文件的文件权限

 sudo chmod -R +x odeint/ 

这一次,它没有说权限被拒绝,但抛出了400行错误,可以在这里看到 – > terminal错误日志

我如何编译它? odeint在文档或其他地方没有安装指南

Solutions Collecting From Web of "Canot编译使用boost的odeint的C ++"

这部分boost似乎使用C ++ 11功能。 因此,您需要将-std=c++0x-std=c++11到您的编译器调用中。

后续错误test.cpp: In function 'int main()': test.cpp:30:5: error: 'stepper_euler' was not declared in this scope指向另一个错误的来源:你忘了包含文件哪个stepper_euler被声明。 将相应的#include <file>放在代码的开头。