在编译OpenCV以及其附加模块时,有时会需要一些第三方的库,如果本地没有,会自动下载,下载地址一般为GitHub,结果当然就是卡死在那里,根本无法下载,下面教大家如何解决这种问题。

问题重现

比如我在使用cmake配置的过程中出现以下情况:

Call Stack (most recent call first):

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/download_protobuf.cmake:23 (ocv_download)

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/download_protobuf.cmake:51 (ocv_protobuf_download)

/home/ryan/build/opencv_contrib-master/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:30 (include)

/home/ryan/build/opencv_contrib-master/modules/dnn/CMakeLists.txt:38 (include)

-- Downloading v3.1.0/protobuf-cpp-3.1.0.tar.gz...

解决思路

从上面的日志中可以得到以下信息:

需要下载protobuf-cpp-3.1.0.tar.gz这个文件

最先报错的是download_protobuf.cmake这个文件

一般情况下,最先报错的那个文件能获得一些与错误相关的信息,于是,我们打开这个文件,如下

set(PROTOBUF_CPP_NAME "libprotobuf")

set(PROTOBUF_CPP_DOWNLOAD_HASH "bd5e3eed635a8d32e2b99658633815ef")

set(PROTOBUF_CPP_PATH "${CMAKE_CURRENT_BINARY_DIR}/3rdparty/protobuf/sources") # /protobuf-3.1.0 subdirectory

set(OPENCV_PROTOBUF_CPP_DOWNLOAD_URL ${OPENCV_PROTOBUF_URL};$ENV{OPENCV_PROTOBUF_URL};https://github.com/google/protobuf/releases/download/)

function(ocv_protobuf_download file ID)

if(DEFINED ${ID}_DOWNLOADED_HASH

AND ${ID}_DOWNLOADED_HASH STREQUAL ${ID}_DOWNLOAD_HASH

AND EXISTS ${${ID}_PATH})

# Files have been downloaded and checked by the previous CMake run

return()

else()

if(EXISTS ${${ID}_PATH})

message(STATUS "${${ID}_NAME}: Removing previous unpacked files: ${${ID}_PATH}")

file(REMOVE_RECURSE ${${ID}_PATH})

endif()

endif()

unset(${ID}_DOWNLOADED_HASH CACHE)

file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.download)

file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/.download/.gitignore" "*\n")

ocv_download(PACKAGE ${file}

HASH ${${ID}_DOWNLOAD_HASH}

URL ${OPENCV_${ID}_DOWNLOAD_URL}

DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.download)

set(${ID}_ARCHIVE "${DOWNLOAD_PACKAGE_LOCATION}")

ocv_assert(EXISTS "${${ID}_ARCHIVE}")

ocv_assert(NOT EXISTS "${${ID}_PATH}")

file(MAKE_DIRECTORY ${${ID}_PATH})

ocv_assert(EXISTS "${${ID}_PATH}")

file(WRITE "${${ID}_PATH}/.gitignore" "*\n")

message(STATUS "${${ID}_NAME}: Unpacking ${file} to ${${ID}_PATH}...")

execute_process(COMMAND ${CMAKE_COMMAND} -E tar xz "${${ID}_ARCHIVE}"

WORKING_DIRECTORY "${${ID}_PATH}"

RESULT_VARIABLE __result)

if(NOT __result EQUAL 0)

message(FATAL_ERROR "${${ID}_NAME}: Failed to unpack ${ID} archive from ${${ID}_ARCHIVE} to ${${ID}_PATH} with error ${__result}")

endif()

ocv_assert(EXISTS "${${ID}_PATH}")

set(${ID}_DOWNLOADED_HASH "${${ID}_DOWNLOAD_HASH}" CACHE INTERNAL "${ID} hash")

#message(STATUS "${${ID}_NAME}: Successfully downloaded")

endfunction()

ocv_protobuf_download(v3.1.0/protobuf-cpp-3.1.0.tar.gz PROTOBUF_CPP)

可以看出,他需要libprotobuf这个库,并且需要下载到 ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/protobuf/sources 目录下,而下载地址就是 https://github.com/google/protobuf/releases/download/ ,于是我们只要手动下载,然后把文件放到这个目录下即可。

Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安装  http://www.linuxidc.com/Linux/2016-07/132860.htm

Ubuntu 16.04下TensorFlow+Caffe+OpenCV3.1+Theano部署  http://www.linuxidc.com/Linux/2017-01/139503.htm

OpenCV的详细介绍:请点这里

OpenCV的下载地址:请点这里

linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件相关推荐

  1. java demo在哪里下载_[Java教程]Java学习 (一)、下载,配置环境变量,第一个demo...

    [Java教程]Java学习 (一).下载,配置环境变量,第一个demo 0 2016-03-01 22:00:18 一.在 http://www.oracle.com 下载java JDK 安装到自 ...

  2. linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤

    前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦.我们可以利用autoconf来生成一个Makefile,尤其在大型工 ...

  3. java解析jtl_在linux底下搭建JDK+jmeter环境,并执行脚本生成聚合报告.jtl文件到本地查看...

    linux环境下搭建jdk 1.可本地直接上传压缩包,直接使用tar zxvf 安装包名称  解压缩(ps:在上传文件之前可先另外新建一个文件夹,一般是上传到当前文件夹) 2.可直接通过wget命令在 ...

  4. 对已有文件进行既读又写的操作时关于文件位置注意事项(适用于Python和C/C++)

    当我们需要对现有文件进行读取数据并修改文件中的数据时,就需要用到对已有文件进行既读又写的操作.有多种可读且可写的文件打开方式:r+,w+,a+,rb+,wb+,ab+,具体含义见下表. 打开 方式 读 ...

  5. python基础教程免费下载-Python基础教程第三版PDF电子书免费下载

    <Python基础教程(第3版)>是2018年人民邮电出版社出版的图书,作者是[挪]Magnus Lie Hetland.该书全面介绍了Python的基础知识和基本概念,包括列表.元组.字 ...

  6. CMake生成多个.so文件

    用CMake来编译生成多个.so文件流程: 1.SDK Manager下载配置好CMake LLDB NDK这个就不需要详细讲了 2.配置完毕后重启一下,然后在app目录下面添加一个CMakeList ...

  7. python读取txt文件并写入excel-Python读excel生成数据存入txt文件

    我的excel文件结构: 学习了xlrd如何操作excel文件.python读写txt文件.jason.dumps()转换dict为string类型之后,进行了第一次尝试. 第一次尝试: import ...

  8. C++版本OpenCv教程

    C++版本OpenCv教程(一)Mat-基本的图像容器 目标 我们有多种方法从现实世界获取数字图像:数码相机.扫描仪.计算机断层扫描和磁共振成像等等.在以上任何情况下,我们(人类)看到的都是图像.然而 ...

  9. win7文件服务器代码,win7文件服务器配置教程

    win7文件服务器配置教程 内容精选 换一换 在存放数据源文件的服务器上,安装配置并启动GDS服务.以便后续应用GDS服务连通GaussDB(for openGauss),进行数据导入.以上传EULE ...

最新文章

  1. Go 函数,包(二)
  2. Unity 3D观察者设计模式-C#委托和事件的运用
  3. java存储过程示例_安全密码存储–请勿做的事和Java示例
  4. TCP粘包问题分析和解决(全)
  5. servlet加载资源两种方式-内外(初始化参数).properties文件
  6. 2013年5月16日星期四初始sqlserver附加数据库权限及maven和selenium
  7. 如何将ffmpeg在windows编译和使用
  8. GZip、Deflate压缩算法对应的C#压缩解压函数
  9. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  10. 订阅github release(官方+IFTTT)
  11. 科学计算机算度数,计算器问题科学计算器有分角度制和弧度制,身 – 手机爱问...
  12. SpringBoot PageOffice 在线编辑 (完整版、有源码)
  13. 系统管理、系统安全命令
  14. bugku--PHP代码审计-sha()函数比较绕过
  15. 如何使用Arduino Uno开发板制作超声波测距仪
  16. 简述观察法的优缺点,简述观察法的主要优点和不足。
  17. JmeterWeb接口测试使用指南
  18. 汇智动力2021年度软件测试学员就业分析报告
  19. 车辆路径优化matlab代码,5个求解车辆路径问题(VRP)的MATLAB算法
  20. 浪潮 E5-2640V2/2.0*2 4G_DDR3L-1600 600G/SAS/10k/2.5*3

热门文章

  1. 数学怪兽-法国数学家庞加莱
  2. 人类共同命运:当下,科学交流尤其需要乐观主义
  3. 阅兵活动首次出动“AI剪辑师”,你看到的短视频可能都出自于ta
  4. 美国已批准马斯克的SpaceX发射1.2万颗卫星 以打造一个天基互联网
  5. Acquiring lock on /*/*/.vscode-server/bin/f80445acd5a3dadef24aa20916 vscode远程linux 服务器无法建立连接
  6. 使用IDEA 连接mysql数据库,执行sql指令
  7. shell 中去掉末尾换行符
  8. sdut 数据结构实验之排序三:bucket sort
  9. spark异常 - Null value appeared in non-nullable field
  10. RedShift到MaxCompute迁移实践指导