Ubuntu — Canot компилировать C ++, который использует odeint из boost

Я на 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;
}
}

ПО первой компиляции g++ -o test test.cpp, это бросило ошибку
/usr/include/boost/numeric/odeint.hpp permission denied

Поэтому я изменил права доступа ко всем файлам odeint рекурсивно, используя

sudo chmod -R +x odeint/

На этот раз он не сказал, что разрешение отклонено, но бросил 400 строк ошибок, как можно увидеть здесь -> журнал ошибок от терминала

Как мне скомпилировать это? В документации или где-либо еще нет инструкций по установке odeint

0

Решение

Эта часть 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> в начале вашего кода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]