因为需要做双流,论文里面推荐到这个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. hdu4612 Warm up[边双连通分量缩点+树的直径]

    给你一个连通图,你可以任意加一条边,最小化桥的数目. 添加一条边,发现在边双内是不会减少桥的.只有在边双与边双之间加边才有效.于是,跑一遍边双并缩点,然后就变成一棵树,这样要加一条非树边,路径上的点( ...

  2. RabbitMQ与Spring集成配置

    1.引入相关jar包 //RabbitMQ compile group: 'org.springframework.amqp', name: 'spring-rabbit', version: '1. ...

  3. More development resources

    社区 名称 官网 google https://www.google.com/ github https://github.com/ StackOverflow https://stackoverfl ...

  4. UVAlive 7414 Squeeze the Cylinders a,b,c三种步数 搜索+最短路

    题意:给你n个点(n<=50),然后有些点之间会有一条路,路是单向的,每个回合让你走a,b,c三种步数中的任意一种(a,b,c<=100),问你最少需要多少个回合才能保证一定能从1点到达n ...

  5. T2695 桶哥的问题——吃桶 题解

    校内测试 ------T3 对于这个题,首先想到的应该就是暴力枚举了吧,看看数据范围,60就是白送的啦!(但是我也不知道怎么才20分qwq) 思路分析: 这个题要你求所有套餐的总价值,先看一眼产生套餐 ...

  6. 集合家族——ArrayList

    一.概述: ArrayList 是实现 List 接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些 ...

  7. SpringSecurity学习总结

    第一.SpringSecurity-简介 1.1简介 SpringSecurity融合Spring技术栈,提供JavaEE应 用的整体安全解决方案: Spring Security为基于Java EE ...

  8. Java 多线程:什么是线程安全性

    线程安全性 什么是线程安全性 <Java Concurrency In Practice>一书的作者 Brian Goetz 是这样描述"线程安全"的:"当多 ...

  9. cmd ora-12560协议适配器错误

    这个问题我解决了很久,其实问题的关键在于我在本机安装了一个Oracle11g数据库以及安装了一个Oracle Client,导致在使用sqlplus / as sysdba链接时出现报协议适配器的错误 ...

  10. 使用 in_memory 工作空间的注意事项

    来自:https://pro.arcgis.com/zh-cn/pro-app/tool-reference/appendices/using-the-in-memory-output-workspa ...