graph-tool需要的依赖比较多,下面仅列出了主要的部分,比较简单的依赖可以参考报错自行解决。
需要注意的是,gcc8.3.0在编译的时候会有bug,升级到9.3.0之后问题消失。升级gcc之后需要重新编译py,否则跟graph-tool一起会报bug。
1 安装boost
1.1 下载并解压boost源码
1.2 执行bootstrap脚本
必须跟三个参数
./bootstrap.sh --with-python=python3 --with-python-root=/usr/local/bin/python3.7 --with-python-version=3.7
# ./bootstrap.sh --with-python=python3 --with-python-root=/usr/local/bin/python3.8 --with-python-version=3.8
1.3 修改编译配置
必须在配置中添加python的 头文件路径 和 库路径(一定确认下libpython3.Xm.so存在,这跟编译py时的参数有关,需要加–enable-shared,另外py3.8的include目录没有m后缀)
...
# Python configuration
import python ;
if ! [ python.configured ]
{
using python : 3.7 : "/usr/local/bin/python3.7" : /usr/local/include/python3.7m : /usr/local/lib ;
# py3.8
# using python : 3.8 : "/usr/local/bin/python3.8" : /usr/local/include/python3.8 : /usr/local/lib ;
}
...
1.4 编译 安装 加载
./b2
./b2 install
ldconfig /usr/local/lib
2 安装CGAL(5)
2.1 安装gmp和mpfr
yum install -y gmp-devel mpfr-devel
2.2 安装(CGAL5以上不需要编译)
cmake .
make install
3 安装cairomm
yum中的cairomm版本存在问题,与graph-tool不兼容,需要手动安装1.12.2版本(1.3、1.5均存在问题,官方表示不会进行处理),安装很简单,https://www.cairographics.org/releases/cairomm-1.12.2.tar.gz,下载后直接configure然后make&&make install即可。如果遇到需要sigc++-3.0到https://download.gnome.org/sources/libsigc++/3.0/libsigc++-3.0.3.tar.xz下载编译安装即可
4 安装graph-tool
4.1 安装其它依赖
yum install -y cairomm-devel sparsehash-devel
yum install -y gobject-introspection gobject-introspection-devel cairo-gobject-devel
pip install pycairo
pip install cython
pip install sparsehash
pip install PyGObject
4.2 下载 解压 进入
4.3 编译(make耗时很久)
./configure --with-python-module-path=/usr/local/lib/python3.7/site-packages --with-boost=/usr/local/boost --with-boost-libdir=/usr/local/boost/lib CPPFLAGS="-I/usr/local/boost/include" LDFLAGS="-L/usr/local/boost/lib" PYTHON=python3.7 --with-boost-python=boost_python37 --with-sparsehash-prefix=google
# py 3.8
# 如果boost没有指定目录可以不用挂boost的参数
# ./configure --with-python-module-path=/usr/local/lib/python3.8/site-packages PYTHON=python3.8 --with-boost-python=boost_python38 --with-sparsehash-prefix=google
make
make install
最后,如果只是简单使用,建议还是按照官方说的,直接安装docker版(但是那个docker里啥也没有很不方便),手动编译代价太高。如果必须手动编译,就加油吧。