因为需要做双流,论文里面推荐到这个GPU版本的TVL1算法,于是开始编译。

一、下载源码

git clone https://github.com/feichtenhofer/gpu_flow.git

二、Dependencies

由于我系统cmake和QT都没有问题,主要问题出在了opencv上,由于之前已经编译过一个OPENCV3.X,被同事安装在了系统路径下,因此我需要重新编译opencv2.4,并且进行版本切换。

下载opencv2.4.13.5,解压后进入源码目录,mkdir build-->cd build-->cmake-gui ..在里面修改install_prefix,并把所有cuda9.0改为cuda8.0,, Configure-->Generate-->make -j28, 然后报错:

CMake Warning at cmake/OpenCVPackaging.cmake: (message): CPACK_PACKAGE_VER

修改opencv的CMakeLists.txt,

  if(GIT_EXECUTABLE)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
OUTPUT_VARIABLE OPENCV_VCSVERSION
RESULT_VARIABLE GIT_RESULT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_RESULT EQUAL )
#set(OPENCV_VCSVERSION "unknown")
set(OPENCV_VCSVERSION "2.4.13")
endif()
else()
# We don't have git:
#set(OPENCV_VCSVERSION "unknown")
set(OPENCV_VCSVERSION "2.4.13")
endif()

修改此处为2.4.13,重新编译通过,make install,完成。

三、编译gpu_flow

1.mkdir -p build

2.cd build

3.cmake-gui ..

修改其中cuda9.0为cuda8.0

configure-->generate,报错,此处由于我两个OPENCV版本发生冲突,需要进行版本切换。

opencv版本切换:

原opencv3在/usr/local/share/OpenCV中,新的opencv2.4.13.5在我的home下面,执行

export PKG_CONFIG_PATH=/home/ocean1101/Workspace/packages/opencv-2.4.13.5/lib/pkgconfig
export LD_LIBRARY_PATH=/home/ocean1101/Workspace/packages/opencv-2.4.13.5/lib

通过以下命令查看是否切换成功:

pkg-config --modversion opencv

修改gpu_flow的CMakeLists.txt:

在前几行添加:

   cmake_minimum_required(VERSION 2.4)
2 set (OpenCV_DIR "/home/ocean1101/Workspace/packages/opencv-2.4.13.5/build/install/")
3 set(CMAKE_PREFIX_PATH "/home/ocean1101/Workspace/packages/opencv-2.4.13.5/build/install")
4 set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)

其中,set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)是由于如果不加这句的话,编译时会静态链接CUDA,如果没有CUDA静态库的话会报错,加上后则为动态链接CUDA,修改完后cmake .. --> make -j24 , OK,大功告成。

linux编译gpu_flow的更多相关文章

  1. 【转】linux 编译安装nginx,配置自启动脚本

    linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...

  2. linux编译中的常见问题

    转linux编译中的常见问题 错误提示:Makefile:2: *** 遗漏分隔符 . 停止. 原因makefile中 gcc语句前 缺少一个 tab分割符 错误提示: bash: ./makefil ...

  3. linux 编译安装nginx,配置自启动脚本

    本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...

  4. 【原创】Linux编译内核

    Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功.   一.准备好必备的库和内核文件   1.添加必备的编译 ...

  5. Linux编译Windows共享目录下代码

    Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的.平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到 ...

  6. linux 编译安装PHP模块

    本文移到:http://www.phpgay.com/Article/detail/classid/6/id/54.html  linux 编译安装PHP模块 1.首先你要有你服务器上安装的PHP的版 ...

  7. [CentOS_7.4]Linux编译安装ffmpeg

    [CentOS_7.4]Linux编译安装ffmpeg   安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...

  8. linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法

    在 linux 编译内核时 make menuconfig 报了下面的错误. *** Unable to find the ncurses libraries or the *** required ...

  9. 二、linux编译环境的搭建

    1.linux编译工具安装 vim安装:apt-get install vim 注意:使用C语言源代码语法加亮功能,需要配置文件/etc/vim/vimrc,加入代码syntaxon.文件后缀必须为. ...

随机推荐

  1. java线程基础巩固---创建并启动线程

    对于java的并发编程方面的东东,不管是面试还是实际工作开发都是非常重要的,而往往只要涉及到并发相关的东东有点让人觉得有点难,而实际工作中涉及到并发可能就是简单的用下同步块.上锁之类的一些简单的操作, ...

  2. stat /var/lib/docker/tmp/docker-builder234542842/usr/local/resource/noah_init.sql

    参考:https://blog.csdn.net/andrew_wf/article/details/85202511 将noah_init.sql放到与Dockerfile同一目录

  3. swap的创建和优先级

    生产环境中,有的时候会遇到swap不够用,或者没有swap的情况,然而生产中需要用到swap,那么下面来实现以下如何创建新的swap. 方法一:如果有空余磁盘,可以直接使用空余磁盘 以/dev/sdb ...

  4. 开源笔记软件Joplin

    Joplin is a free, open source note taking and to-do application, which can handle a large number of ...

  5. luogu 2982 [USACO10FEB]慢下来Slowing down dfs序+树状数组

    将要查询的信息放到 dfs 序上并用树状数组查一个前缀和即可. #include <bits/stdc++.h> #define N 100004 #define setIO(s) fre ...

  6. table表格合并列中相同的内容

    方法一: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  7. ubuntu彻底卸载mysql并且重新安装

    环境: root@ubuntu:/usr/local/mysql/data# uname -a Linux ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Ju ...

  8. 关于AngularJS与其他前端框架混合使用的思考

    AngularJS 是一个为动态WEB应用设计的结构框架,拥有双向数据绑定,模板,MVVM,依赖注入,指令5大优点,Angular最有诱惑力的就是数据绑定功能,使用MVC模式进行开发,Angular在 ...

  9. redis的主从复制原理

    1. 前言 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis主从复制可以根据是否是全量分为全量同 ...

  10. Nginx之最简单的反向代理机制分析

    注:当前分析基于 Nginx之搭建反向代理实现tomcat分布式集群 的配置. 1. 用到的指令 下面介绍在上面的配置中用到的指令. upstream 指令 语法:upstream name { .. ...