linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件
在编译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时下载文件相关推荐
- java demo在哪里下载_[Java教程]Java学习 (一)、下载,配置环境变量,第一个demo...
[Java教程]Java学习 (一).下载,配置环境变量,第一个demo 0 2016-03-01 22:00:18 一.在 http://www.oracle.com 下载java JDK 安装到自 ...
- linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤
前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦.我们可以利用autoconf来生成一个Makefile,尤其在大型工 ...
- java解析jtl_在linux底下搭建JDK+jmeter环境,并执行脚本生成聚合报告.jtl文件到本地查看...
linux环境下搭建jdk 1.可本地直接上传压缩包,直接使用tar zxvf 安装包名称 解压缩(ps:在上传文件之前可先另外新建一个文件夹,一般是上传到当前文件夹) 2.可直接通过wget命令在 ...
- 对已有文件进行既读又写的操作时关于文件位置注意事项(适用于Python和C/C++)
当我们需要对现有文件进行读取数据并修改文件中的数据时,就需要用到对已有文件进行既读又写的操作.有多种可读且可写的文件打开方式:r+,w+,a+,rb+,wb+,ab+,具体含义见下表. 打开 方式 读 ...
- python基础教程免费下载-Python基础教程第三版PDF电子书免费下载
<Python基础教程(第3版)>是2018年人民邮电出版社出版的图书,作者是[挪]Magnus Lie Hetland.该书全面介绍了Python的基础知识和基本概念,包括列表.元组.字 ...
- CMake生成多个.so文件
用CMake来编译生成多个.so文件流程: 1.SDK Manager下载配置好CMake LLDB NDK这个就不需要详细讲了 2.配置完毕后重启一下,然后在app目录下面添加一个CMakeList ...
- python读取txt文件并写入excel-Python读excel生成数据存入txt文件
我的excel文件结构: 学习了xlrd如何操作excel文件.python读写txt文件.jason.dumps()转换dict为string类型之后,进行了第一次尝试. 第一次尝试: import ...
- C++版本OpenCv教程
C++版本OpenCv教程(一)Mat-基本的图像容器 目标 我们有多种方法从现实世界获取数字图像:数码相机.扫描仪.计算机断层扫描和磁共振成像等等.在以上任何情况下,我们(人类)看到的都是图像.然而 ...
- win7文件服务器代码,win7文件服务器配置教程
win7文件服务器配置教程 内容精选 换一换 在存放数据源文件的服务器上,安装配置并启动GDS服务.以便后续应用GDS服务连通GaussDB(for openGauss),进行数据导入.以上传EULE ...
最新文章
- Go 函数,包(二)
- Unity 3D观察者设计模式-C#委托和事件的运用
- java存储过程示例_安全密码存储–请勿做的事和Java示例
- TCP粘包问题分析和解决(全)
- servlet加载资源两种方式-内外(初始化参数).properties文件
- 2013年5月16日星期四初始sqlserver附加数据库权限及maven和selenium
- 如何将ffmpeg在windows编译和使用
- GZip、Deflate压缩算法对应的C#压缩解压函数
- 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
- 订阅github release(官方+IFTTT)
- 科学计算机算度数,计算器问题科学计算器有分角度制和弧度制,身 – 手机爱问...
- SpringBoot PageOffice 在线编辑 (完整版、有源码)
- 系统管理、系统安全命令
- bugku--PHP代码审计-sha()函数比较绕过
- 如何使用Arduino Uno开发板制作超声波测距仪
- 简述观察法的优缺点,简述观察法的主要优点和不足。
- JmeterWeb接口测试使用指南
- 汇智动力2021年度软件测试学员就业分析报告
- 车辆路径优化matlab代码,5个求解车辆路径问题(VRP)的MATLAB算法
- 浪潮 E5-2640V2/2.0*2 4G_DDR3L-1600 600G/SAS/10k/2.5*3
热门文章
- 数学怪兽-法国数学家庞加莱
- 人类共同命运:当下,科学交流尤其需要乐观主义
- 阅兵活动首次出动“AI剪辑师”,你看到的短视频可能都出自于ta
- 美国已批准马斯克的SpaceX发射1.2万颗卫星 以打造一个天基互联网
- Acquiring lock on /*/*/.vscode-server/bin/f80445acd5a3dadef24aa20916 vscode远程linux 服务器无法建立连接
- 使用IDEA 连接mysql数据库,执行sql指令
- shell 中去掉末尾换行符
- sdut 数据结构实验之排序三:bucket sort
- spark异常 - Null value appeared in non-nullable field
- RedShift到MaxCompute迁移实践指导