手动编译shogun,如果按照直接按照官网上的步骤进行,会踩非常多的坑,下面分享一下在下的编译过程,希望能为阁下提供些许借鉴。
1. git clone https://github.com/shogun-toolbox/shogun.git
这里是从服务器上下载shogun的工具包。Git命令如果没有安装,可以通过apt-get install git进行安装。下载完成后,当前目录下会有一个名为shogun的文件夹。
2. cd shogun
这与官网的第二步不同,因为如果按照官网所述的步骤,第二步会报错。
3. git submodule update --init
4. mkdir build
5. cd build
6. cmake -DPYTHON_INCLUDE_DIR=/usr/include/python3.5 \
-DPYTHON_LIBRARY=/usr/lib/python3.5/config-x86_64-linux-gnu/libpython3.5.so \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_PACKAGES_PATH=/usr/local/lib/python3.5/site-packages \
-BUILD_META_EXAMPLES=ON \
-DUSE_SVMLIGHT=ON \
-DINTERFACE_PYTHON=ON ..
一般这一步会报错,称找不到依赖swig和ccache,ccache可以直接通过apt-get install ccache进行安装,swig虽然也可以通过此种方式安装,但安装的是swig 3.0.8,而shogun要求的是swig 3.0.12,所以需要手动安装。在手动安装swig 3.0.12之前,记得将其他swig版本删除哦,不然依然会报相同的错误呢!如果swig和ccache都安装正确,但cmake还报错或者报警告的话,说明cmake版本有问题,shogun项目本身使用的cmake3.2。
7. make
我在make过程中也报错,原因主要是变量的定义与声明,其本质原因是c++编译器的问题。因为linux系统自带的c++编译器一般都是4.8版本的,但shogun项目中很多代码用到了5.0以上的特性,所以才会报错。这时只需要将c++编译器更新到5.0以上即可解决问题。
8. make install
9. 设置环境变量(修改/etc/profile文件)
- 设置libshogun.so的路径,一般在/usr/local/lib/下,所以LD_LIBRARY_PATH设置为:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 设置shogun.py的路径,一般在/usr/local/lib/python3.5/site-packages/下,所以PYTHONPATH设置为:
export PYTHONPATH=/usr/local/lib/python3.5/site-packages/:$PYTHONPATH
这里容易出错的地方就是,官网上介绍设置变量LD_LIBRARY_PATH和PYTHONPATH时,路径中带上了文件libshogun.so和shogun.py, 但这会导致该环境变量失效的,因为这两个变量应该是一个文件夹路径而不是文件。