手动编译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, 但这会导致该环境变量失效的,因为这两个变量应该是一个文件夹路径而不是文件。

Linux下手动编译shogun的更多相关文章

  1. linux 下手动编译安装无线网卡驱动

    先参照 <本地yum源安装GCC >安装好gcc hp的笔记本上安装了CentOS6.3,没有安装无线网卡驱动,安装这个驱动,在Google上找了好多资料,最后终于解决了这个问题.在这里做 ...

  2. 如何在Linux下手动编译安装gcc

    如果可以通过apt来安装的话,尽量不要手工编译了,手工编译是最后的选择.用apt安装,只需要输入一条命令: sudo apt-get install gcc 手工编译的话,gcc和其他软件包存在如下的 ...

  3. 在linux下手动安装 apache, php, mysql--终极版

    在linux下手动安装 apache, php, mysql: 参考: http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html ...

  4. LINUX下文件编译

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  5. ACE-6.1.0 linux 下的编译与安装步骤

    ACE-6.1.0 linux 下的编译与安装步骤  引用至http://www.cnblogs.com/liangxiaxu/archive/2013/03/07/2948417.html 1.从  ...

  6. FFmpeg在Linux下安装编译过程

    转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下 ...

  7. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  8. linux下将编译错误输出到一个文本文件

    linux下将编译错误输出到一个文本文件 command > filename 把把标准输出重定向到一个新文件中 command > > filename 把把标准输出重定向到一个文 ...

  9. Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程

    Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程 二 18 奶牛 Linux, Ubuntu, Windows 1,885 views查看评论 最近奶牛一直在折腾linux下的gru ...

随机推荐

  1. zabbix监控服务搭建

    命令配置 浏览器配置: 检查必须全部ok(若有warning,检查是否漏装包,重启php-fpm服务) 数据库信息 主机名(zabbix server ip).端口号(默认).名字(随意) 配置摘要 ...

  2. C sharp #001# hello world

    饮水思源:金老师的自学网站 索引 编写一个简单的控制台程序. 日期计算的结构化编程实现 日期计算机面向对象编程实现 直接应用已有组件 1.编写一个简单的控制台程序. using System; usi ...

  3. MATLAB R2018b Mac中文版安装教程

    MATLAB r2018b mac中文版是一款强大的可视化数学分析软件,专门用于在Mac上执行数值计算,编程和可视化任务时极大地提高您的工作效率.在MATLAB的帮助下,您可以分析数据,创建应用程序, ...

  4. Java集合中的细节

    integer数据对比 对于Integer var = ? 在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值 ...

  5. idea maven指定编译参数

    "Settings" > "Build, Execution, Deployment" > "Compiler" > &q ...

  6. XUnit测试框架-Python unittest

    选择 语言选择 本次个人作业我选择的语言是Python,了解学习Python有一段时间了但是一直没有练习,所以这次玩蛇,使用的版本是Python3.6. 开发工具选择 我选择的IDE是Pycharm, ...

  7. JDK源码分析(12)之 ConcurrentHashMap 详解

    本文将主要讲述 JDK1.8 版本 的 ConcurrentHashMap,其内部结构和很多的哈希优化算法,都是和 JDK1.8 版本的 HashMap是一样的,所以在阅读本文之前,一定要先了解 Ha ...

  8. 当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置

    场景重现 Windows 10 操作系统 (64-bit) 已经安装 .NET Core SDKs 如下: C:\Users\taadis>dotnet --list-sdks 2.1.202 ...

  9. Lintcode489-Convert Array List to Linked List-Easy

    489. Convert Array List to Linked List Convert an array list to a linked list. Example Example 1: In ...

  10. [IoC容器Unity]第二回:Lifetime Managers生命周期

    1.引言 Unity的生命周期是注册的类型对象的生命周期,而Unity默认情况下会自动帮我们维护好这些对象的生命周期,我们也可以显示配置对象的生命周期,Unity将按照配置自动管理,非常方便,下面就介 ...