由于实验的需要,想运行一下这个项目:https://github.com/luckiezhou/DynamicTriad,和所有科研相关类的repo一样,要真正用起来还得填很多坑。不得不说,这个repo的作者已经足够认真负责,但是要跑起来还是不容易,个人感觉,machine learning方面的实验代码,能真正顺利直接跑起来的,不超过20%。
在这个repo第一个dependency就花了些时间,由于需要用到Boost.Python,所以我简单学习了一下。Boost C++被称为C++标准库的后备,是C++标准化进程的开发引擎之一。Boost.Python顾名思义就是C++和Python的接口咯。按照这个repo作者给的链接,似乎应该从这里开始:https://www.boost.org/doc/libs/1_65_1/libs/python/doc/html/building/installing_boost_python_on_your_.html,这个页面就有点让人摸不着头脑了:
you might want to supply the --with-python
argument to bjam
(or the --with-libraries=python
argument to configure
)
bjam和configure都是些什么鬼??没办法,老老实实看这里:https://www.boost.org/doc/libs/1_74_0/more/getting_started/unix-variants.html
其实boost的文档也写得特别细心和体贴了!按照这个页面,我们要进行如下操作:
1. 下载boost_1_73_0.tar.bz2.
2. 在文件夹下(例如我把上面这个压缩包放在了:Boost.Python这个目录下),运行:
tar --bzip2 -xf boost_1_73_0.tar.bz2
虽然说Boost文档已经写得很好了,但是还有些思路清奇的地方:按道理来说,我们解压以后肯定是进入到目录下执行一些命令啊,可文档洋洋洒洒讲了些乱七八糟的东西:3 Header-Only Libraries,4 Build a Simple Program Using Boost,不是说这些不重要,但完全可以放到后面再讲啊。再往下看终于看到了:5 Prepare to Use a Boost Library Binary:
3. 我们进入到解压目录,运行:
./bootstrap.sh --with-libraries=python
之所以带后面这个,是因为这一步介绍到:consider using the --show-libraries and --with-libraries=library-name-list options to limit the long wait you'll experience if you build everything.
呵呵,所以和前面页面中说的bjam和configure还是不一样啊。
4. 上一步运行完之后,就会在目录下产生:project-config.jam,bootstrap.log,b2三个文件,再运行:
sudo ./b2 install
这步运行完之后,官方文档就又开始发散了,开始讲:5.2 Or, Build Custom Binaries,6 Link Your Program to a Boost Library,也许对开发人员很重要,但是对我们来讲,就是想要把Boost.Python用起来,所以参考一些朋友的博客:https://www.cnblogs.com/LyndonYoung/articles/5288618.html,https://www.cnblogs.com/gaowengang/p/8994370.html,
5. 输入:
cd /etc/profile.d
到这个目录下,然后创建一个文件boost.sh:
sudo touch boost.sh
我们用gedit打开并编辑这个文件:
sudo gedit boost.sh
在文件中输入以下内容:
#!/bin/sh
BOOST_ROOT=/home/%我的用户名%/Boost.Python/boost_1_73_0
BOOST_INCLUDE=/usr/local/include/boost
BOOST_LIB=/usr/local/lib
export BOOST_INCLUDE BOOST_LIB BOOST_ROOT
保存后关闭,依次执行:
sudo chmod +x boost.sh
source boost.sh
这些步骤的主要目的就是设置环境变量。到此为止,基本上把Boost.Python装好了,后面继续填这个repo剩下的坑。就先总结这么多。