我正在运行Pop!_OS (ubuntu导数)和apt从默认存储库安装的boost (libboost-all dev)。我知道它安装得很好,因为我可以用GCC编译并运行简单的boost odeint示例。
然而,当我试图在jupyter笔记本中使用zeus-cling内核运行相同的示例时,我在包含odeint标题时出错了。我可以在执行以下代码时重新创建错误:
#pragma cling add_include_path("/usr/include")
#include <boost/numeric/odeint.hpp>我得到的错误消息是:
In file included from input_line_8:1:
In file included from /usr/include/boost/numeric/odeint.hpp:22:
In file included from /usr/include/boost/numeric/odeint/config.hpp:44:
In file included from /usr/include/boost/config.hpp:48:
In file included from /usr/include/boost/config/stdlib/libstdcpp3.hpp:78:
/usr/include/unistd.h:756:28: error: expected function body after function declarator
extern __pid_t fork (void) __THROWNL;
^
/usr/include/unistd.h:869:11: fatal error: 'bits/getopt_posix.h' file not found
# include <bits/getopt_posix.h>
^~~~~~~~~~~~~~~~~~~~~
Interpreter Error: 据我所知,bits/getopt_posix.h是GCC唯一的标题,因此我认为问题可能是因为boost头正在配置自己,就好像它们是在GCC下编译,而不是在clang/clang下编译。
那么,我该如何将boost恰当地包含在一本西埃夫斯-紧贴的笔记本里呢?
发布于 2020-06-14 07:59:07
Ηi在那里
到目前为止,我一直在使用xeus(几何学)的boost (几何学)内核,没有任何问题。我安装从康达锻造(康达安装升压-c康达锻造)。我尝试将odeint.hpp包括在我的不稳定环境中,没有任何问题:

ΒW Giorgos
发布于 2020-04-20 22:01:06
我走投无路,最终得到了解决我的问题的办法。
因此,我所做的是将boost超级项目作为子模块克隆到我的存储库中,然后添加使boost::numeric::odeint工作所需的所有包含路径。Odeint只是标题,所以它可以工作。这应该适用于所有的头只提升库。
我猜这不是正确的方法,但对我来说是可行的。只是为了以后的原型制作和小实验。
这是谐波振荡器的例子。
#pragma cling add_include_path("../lib/boost/libs/numeric/odeint/include")
#pragma cling add_include_path("../lib/boost/libs/numeric/ublas/include")
#pragma cling add_include_path("../lib/boost/libs/config/include")
#pragma cling add_include_path("../lib/boost/libs/type_traits/include")
#pragma cling add_include_path("../lib/boost/libs/serialization/include")
#pragma cling add_include_path("../lib/boost/libs/core/include")
#pragma cling add_include_path("../lib/boost/libs/preprocessor/include")
#pragma cling add_include_path("../lib/boost/libs/static_assert/include")
#pragma cling add_include_path("../lib/boost/libs/mpl/include")
#pragma cling add_include_path("../lib/boost/libs/utility/include")
#pragma cling add_include_path("../lib/boost/libs/typeof/include")
#pragma cling add_include_path("../lib/boost/libs/array/include")
#pragma cling add_include_path("../lib/boost/libs/assert/include")
#pragma cling add_include_path("../lib/boost/libs/throw_exception/include")
#pragma cling add_include_path("../lib/boost/libs/units/include")
#pragma cling add_include_path("../lib/boost/libs/integer/include")
#pragma cling add_include_path("../lib/boost/libs/fusion/include")
#pragma cling add_include_path("../lib/boost/libs/range/include")
#pragma cling add_include_path("../lib/boost/libs/iterator/include")
#pragma cling add_include_path("../lib/boost/libs/concept_check/include")
#pragma cling add_include_path("../lib/boost/libs/detail/include")
#pragma cling add_include_path("../lib/boost/libs/function_types/include")
#pragma cling add_include_path("../lib/boost/libs/predef/include")
#pragma cling add_include_path("../lib/boost/libs/math/include")
#pragma cling add_include_path("../lib/boost/libs/lexical_cast/include")
#pragma cling add_include_path("../lib/boost/libs/numeric/conversion/include")
#pragma cling add_include_path("../lib/boost/libs/container/include")
#pragma cling add_include_path("../lib/boost/libs/move/include")
#pragma cling add_include_path("../lib/boost/libs/smart_ptr/include")
#pragma cling add_include_path("../lib/boost/libs/multi_array/include")
#pragma cling add_include_path("../lib/boost/libs/functional/include")
#pragma cling add_include_path("../lib/boost/libs/function/include")
#pragma cling add_include_path("../lib/boost/libs/type_index/include")
#pragma cling add_include_path("../lib/boost/libs/container_hash/include")
#pragma cling add_include_path("../lib/boost/libs/bind/include")
#include <vector>
#include <iostream>
#include "boost/numeric/odeint.hpp"
typedef std::vector< double > state_type;
const double gam = 0.15;
void harmonic_oscillator(const state_type &x , state_type &dxdt , const double t)
{
dxdt[0] = x[1];
dxdt[1] = -x[0] - gam*x[1];
}
state_type x(2);
x[0] = 1.0; // start at x=1.0, p=0.0
x[1] = 0.0;
size_t steps = boost::numeric::odeint::integrate(harmonic_oscillator,
x , 0.0 , 10.0 , 0.1 );
std::cout << steps << std::endl;https://stackoverflow.com/questions/61205040
复制相似问题