首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用boost与xeus-cling jupyter内核?

我如何使用boost与xeus-cling jupyter内核?
EN

Stack Overflow用户
提问于 2020-04-14 09:58:04
回答 2查看 782关注 0票数 1

我正在运行Pop!_OS (ubuntu导数)和apt从默认存储库安装的boost (libboost-all dev)。我知道它安装得很好,因为我可以用GCC编译并运行简单的boost odeint示例。

然而,当我试图在jupyter笔记本中使用zeus-cling内核运行相同的示例时,我在包含odeint标题时出错了。我可以在执行以下代码时重新创建错误:

代码语言:javascript
复制
#pragma cling add_include_path("/usr/include")
#include <boost/numeric/odeint.hpp>

我得到的错误消息是:

代码语言:javascript
复制
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恰当地包含在一本西埃夫斯-紧贴的笔记本里呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-14 07:59:07

Ηi在那里

到目前为止,我一直在使用xeus(几何学)的boost (几何学)内核,没有任何问题。我安装从康达锻造(康达安装升压-c康达锻造)。我尝试将odeint.hpp包括在我的不稳定环境中,没有任何问题:

ΒW Giorgos

票数 1
EN

Stack Overflow用户

发布于 2020-04-20 22:01:06

我走投无路,最终得到了解决我的问题的办法。

因此,我所做的是将boost超级项目作为子模块克隆到我的存储库中,然后添加使boost::numeric::odeint工作所需的所有包含路径。Odeint只是标题,所以它可以工作。这应该适用于所有的头只提升库。

我猜这不是正确的方法,但对我来说是可行的。只是为了以后的原型制作和小实验。

这是谐波振荡器的例子。

代码语言:javascript
复制
#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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61205040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档