文章目录

  • 写在一切之前,放弃源码编译caffe2还来得及
  • 源码编译caffe2
  • 不放弃源码编译caffe2的结果是......
    • 问题1 :各种各样的错误
    • 问题2:E: 无法定位软件包 build-essential
    • 问题3:NCCV warning
    • 问题4:简称Makefile:127:
    • 问题5:简称No rule to make target ... needed .... Stop.
    • 问题6:protobuf的错误
    • 问题7:Install configuration: "Release"
    • 问题8:caffe2的测试错误

写在一切之前,放弃源码编译caffe2还来得及

或许你不能理解我为啥要再一次从源码编译caffe2,因为我已经从源码编译了n次caffe2也没有成功,所以是再一次…但是,有一些小坑还是解决掉了(虽然写这篇博客的时候我还没有成功编译)。毕竟,梦想还是要有的,要不然和一条咸鱼有什么区别。(不过是一条有梦想的咸鱼罢了)
再一次友情提示,不要源码编译caffe2!不要源码编译caffe2!不要源码编译caffe2!
珍爱生命,远离源码编译caffe2~下面就是我的血泪史,emmmmmm~
先放上我的电脑配置,是GPU的~配置不同的话大家尽量参考吧~

电脑 微星GS65 GTX1070
系统 Ubuntu 16.04 (14.04和16.04有些安装步骤不同)
CUDA 8.0 Cudnn 6.0
Anaconda 2 Python 2.7

源码编译caffe2

在我的电脑配置的基础上我就开始大胆的装caffe2了,不要怕,就是刚,反正一次也装不成功。要是你一次能装成功那你就是caffe2的锦鲤无疑了。大家可以去看caffe2的官网去看安装教程和环境要求,感觉官网才是王道,附上地址。友情提示:一定要选自己电脑的配置!

# 复制caffe2(caffe2和pytorch合并了...嘻嘻嘻~)
git clone --recursive https://github.com/pytorch/pytorch.git && cd pytorch git submodule update --init
mkdir build && cd build# 安装caffe2
cmake .. -DUSE_NCCL=OFF
sudo make install -j4# 添加PYTHON环境变量
vim ~/.bashrc
export PYTHONPATH=/home/kaka/pytorch/build${PYTHONPATH:+:${PYTHONPATH}}

安装caffe2成功以后需要验证一下~输出success即为成功!

python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

不放弃源码编译caffe2的结果是…

问题1 :各种各样的错误

在我不断的debug的血泪史中,我发现很多源码编译的错误都是因为装得包不符合环境配置,或者有些包没有装,所以把一些我有重新单独装的包列在下面,这些包一定要装!!!
这里大部分是caffe2的官网给的要装的包,一定要装!!! 如果有些包一次没装成功那就多试几次~里面还有一些是在我的血泪史里不断debug发现要装的包~最好之前就装上~要不然会很痛苦~
里面有一些比较难装的包,给大家都做了教程——你不会知道Ubuntu那些难装的包有多难装,如果有些奇葩的实在是装不上的包,请大家重启重装多喝热水,不要放弃自己

sudo apt-get update
sudo apt-get install -y --no-install-recommends \build-essential \git \cmake \libgoogle-glog-dev \libgtest-dev \libiomp-dev \libleveldb-dev \liblmdb-dev \libopencv-dev \libopenmpi-dev \libsnappy-dev \libprotobuf-dev \openmpi-bin \openmpi-doc \protobuf-compiler \python-dev \python-pip
sudo pip install --user \future \numpy \protobuf \typing \hypothesis
sudo l_mkl_2019.1.144/install_GUI.sh    # 安装mkl

此外,如下这行代码很重要 (虽然我也不知道为什么,16.04和14.04不一样哦~)

# for Ubuntu 14.04
sudo apt-get install -y --no-install-recommends \libgflags2 \cmake3
# for Ubuntu 16.04
sudo apt-get install -y --no-install-recommends \libgflags-dev \cmake

说明:
1.protobuf&protoc ——当系统的libprotoc低版本时,如2.5版本的就会冲突和python中的protoc库,从而导致无法顺利安装
2.cmake ——cmake的版本最好是3.5.1才可以,记得更新
3.gcc和g++ ——gcc和g++用4.9版本的比较容易成功

问题2:E: 无法定位软件包 build-essential

kaka@kaka-GS65-Stealth-Thin-8RF:~$ sudo apt-get install -y --no-install-recommends \ build-essential \ cmake \ git \ libgoogle-glog-dev \ libprotobuf-dev \ protobuf-compiler \ python-dev \ python-pip
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
E: 无法定位软件包  build-essential
E: 无法定位软件包  cmake
E: 无法定位软件包  git
E: 无法定位软件包  libgoogle-glog-dev
E: 无法定位软件包  libprotobuf-dev
E: 无法定位软件包  protobuf-compiler
E: 无法定位软件包  python-dev
E: 无法定位软件包  python-pip

原因(个人理解): 可能是在一些软件包依赖于一些其他的软件旧的包,如果不更新这些依赖包,我们想装得软件包就没有办法安装。
解决办法: 最保险的办法就是要更新sudo apt-get update!!!此外,用sudo apt-get install一个一个的装,问题就不会报错了。博客上还有其他两种方式来解决这个问题,大家也可以参考一下~ Ubuntu解决包依赖关系 ~ 解决apt-get install E: 无法定位软件包问题 ~

问题3:NCCV warning

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvlink fatal   : Internal error: reference to deleted section
Makefile:83: recipe for target '/home/kaka/pytorch/build/nccl/obj/collectives/device/devlink.o' failed
make[5]: *** [/home/kaka/pytorch/build/nccl/obj/collectives/device/devlink.o] Error 1
Makefile:45: recipe for target 'devicelib' failed
make[4]: *** [devicelib] Error 2
Makefile:25: recipe for target 'src.build' failed
make[3]: *** [src.build] Error 2
CMakeFiles/nccl_external.dir/build.make:110: recipe for target 'nccl_external-prefix/src/nccl_external-stamp/nccl_external-build' failed
make[2]: *** [nccl_external-prefix/src/nccl_external-stamp/nccl_external-build] Error 2
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/nccl_external.dir/all' failed
make[1]: *** [CMakeFiles/nccl_external.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

原因: 是在 third_party/nccl的问题
解决办法:cmake ..的时候禁用nccl,即:cmake .. -DUSE_NCCL=OFF

问题4:简称Makefile:127:

CMakeFiles/Makefile2:264: recipe for target 'src/ATen/test/CMakeFiles/scalar_test.dir/all' failed
make[1]: *** [src/ATen/test/CMakeFiles/scalar_test.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

原因: 网上的解释大多都是gcc和g++版本的问题,我不太懂原理,但是亲测有效,gcc和g++的版本强烈安利要装4.9版本,不要装其他的(默认是5.4),因为很有可能报一堆乱七八糟的错。
解决办法: 更新或者降低gcc和g++的版本。

sudo apt install gcc-4.9 g++-4.9
export CC="gcc-4.9"
export CXX="g++-4.9"

问题5:简称No rule to make target … needed … Stop.

make[2]: *** No rule to make target '/usr/local/cuda/lib64/libcudnn.so', needed by 'lib/libcaffe2_gpu.so'。 停止。
CMakeFiles/Makefile2:1747: recipe for target 'caffe2/CMakeFiles/caffe2_gpu.dir/all' failed
make[1]: *** [caffe2/CMakeFiles/caffe2_gpu.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

解决办法: 删除旧的,然后重新定向。
有一篇博客写的很详细,可以参考大佬们的经验。博客地址——No rule to make target ‘usr/lib/x86_64-linux-gnu/libcuda.so’ Linux下安装OpenCV时 make编译出现的Bug
ps:这个问题我跟据几个博主的方法试了一下并没有效果,但是有人成功了,不知道什么问题,所以我就愉(暴)快(躁)的重装了。个人猜测应该是opencv的问题(个人建议:一定要在装caffe2前装opencv)。

问题6:protobuf的错误

collect2: error: ld returned 1 exit status
make[2]: *** [bin/blob_test] Error 1
make[1]: *** [caffe2/CMakeFiles/blob_test.dir/all] Error 2
Linking CXX shared module python/caffe2_pybind11_state.so
[ 92%] Built target caffe2_pybind11_state
make: *** [all] Error 2

原因: protobuf的版本问题,Ubuntu16.04自带的protobuf是2.6.1版本的,需要更新为>3.4.1版本的。
解决办法: 安装protobuf 3.4.1——安装教程
ps:这个问题我没有碰到过,但是看博客过程中感觉很多人碰到,所以也一并贴上来给大家看一下~
有一个安装protobuf的非常详细的教程,是一个大佬写的,大家可以参考——Ubuntu 16.04 安装 protobuf 以及测试/使用

问题7:Install configuration: “Release”

-- Install configuration: "Release"
CMake Error at cmake_install.cmake:36 (file):file cannot create directory: /usr/local/share/cmake/Caffe2.  Maybe needadministrative privileges.Makefile:71: recipe for target 'install' failed
make: *** [install] Error 1

原因: 没有加sudo,是只读的。
解决办法: make命令要加上sudo,即改为:sudo python setup.py install

问题8:caffe2的测试错误

tensor@tensor-GS65-Stealth-Thin-8RF:~/pytorch$ python caffe2/python/operator_test/activation_ops_test.py
/home/tensor/.local/lib/python2.7/site-packages/hypothesis/_settings.py:197: HypothesisDeprecationWarning:
The min_satisfying_examples setting has been deprecated and disabled, due to
overlap with the filter_too_much healthcheck and poor interaction with the
max_examples setting.
note_deprecation(d.deprecation_message, self)

原因: caffe2的测试使用了activation_ops_test.py文件来测试的,可以理解为用激活函数测试的,其实这个报错是正常的,是因为cudnn没有在激活函数上加速,大家可以用caffe2/python/operator-test文件夹下的任意一个后缀为_ops_test.py的文件再测试一遍,能输出ok就说明安装caffe2成功了。
解决办法: 用caffe2/python/operator-test文件夹下的任意一个后缀为_ops_test.py的文件再测试一遍。

在这里,再一次感谢实验室的小伙伴们在我不断重装caffe2的时候给我的支持,还要非常感谢百度、谷歌、github、csdn、简书等网站上分享自己caffe2源码编译心路历程的各位大佬们,尤其是这篇文章中引用了文章和链接的大佬们,真心感谢各位大佬们!!!给大佬们比个小心心!!!
文章最后的最后,还是对大家说,如果不是必要的必须需要caffe2源码编译的话,不要轻易尝试caffe2的源码编译,因为这个过程很痛苦,真的很痛苦。不过如果能成功编译caffe2话心情还是很up的(虽然n天持续心情很down)。caffe2的源码编译就到这里啦,大家也可以回看我们ubuntu16.04+cuda9+cudnn7+Anaconda2+caffe2的安装教程。再次谢谢大家的支持和大佬们的分享!

再一次源码编译caffe2的血泪史相关推荐

  1. ubuntu 源码编译libtorch

    ## pytorch/libtorch qq群: 1041467052 有一点儿感悟就是: 一定要去官网找一手资料,百度出来的都是个人根据官网来的,这个就随便看看了. 官网:https://githu ...

  2. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  3. mono和monodevelop源码编译安装

    之所以用源码编译的方式安装mono和monodevelop,是因为通过yum安装的mono不是最新版本,而且monodevelop不能建 asp.net MVC3的工程. 而且通过源码安装,可以进一步 ...

  4. bazel源码编译Tensorflow

    因为研究需求,要从Tensorflow源码编译libtensorflow_cc.so和libtensorflow_framwork.so两个库,工具是bazel. 编译硬件需求:GCC4.8以上,ba ...

  5. 烂泥:mysql5.5数据库cmake源码编译安装

    本文首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开始使用cmake 编译工 ...

  6. mysql5.7 cmake源码编译安装

    mysql5.7 cmake源码编译安装, -----该文章的知识点是一个大牛总结的,我这里只是加工了一下,非原创文章. 搜狐开源镜像站:http://mirrors.sohu.com/ 网易开源镜像 ...

  7. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  8. 源码 linux下编译_Linux云服务器软硬链接及源码编译安装python3.8的一些备注

    推荐一个简书作者写的从零开始学习Linux,非常细,授人以鱼不如授人以渔. https://www.jianshu.com/p/54c0e6a1da99 正文:看一下服务器的版本 cat /proc/ ...

  9. Cesium源码编译过程

    Cesium源码编译过程 文章目录 Cesium源码编译过程 1. 操作环境 2. 主要步骤 3. 参考链接 4. 源码扩展 1. 操作环境 NodeJS V12.12.0 Git 注:不需要全局安装 ...

最新文章

  1. MyBatis传入参数与parameterType
  2. 11 张流程图帮你搞定 Spring Bean 生命周期 (核心)
  3. stm32控制舵机任意角度_如何对舵机建模仿真?
  4. 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)
  5. 配置Tomcat使用https协议(配置SSL协议)
  6. 为什么前端工程师薪资越来越高?
  7. java中static关键字的理解(转载)
  8. java中implements是什么意思_java中extends与implements区别
  9. 在老ASP中使用对象的对象生存期问题
  10. Python内置函数(66)——vars
  11. 博为峰Java技术文章 ——JavaSE Swing焦点事件的处理
  12. 如何在Ubuntu系统下安装JDK
  13. KB和kB,MB和mb,详细解释计算机存储单位
  14. label confusion learning to enhance text classification models
  15. 如何制作视频抠图?制作视频抠像的教程分享给你
  16. 训练赛1_E_Lawnmower
  17. 认认真真推荐10个优秀的公众号
  18. java.io.IOException: java.io.FileNotFoundException: XXX(系统找不到指定的路径)
  19. 全球十大资质正规现货黄金交易平台排名榜单(最新版汇总)
  20. 在Ubuntu系统中修改下载源

热门文章

  1. ubuntu 查看内存及cpu使用情况
  2. 马云西点军校华为_马云西点军校演讲:世界需要的不是去证明自己多厉害
  3. python 爬虫(爬取网页的img并下载)
  4. vue cli3 百度地图定位
  5. Solr云(SolrCloud)
  6. 巴菲特格言:别人越恐惧,你要越贪婪,别人越贪婪,你要越恐惧。
  7. 施努卡:机器视觉系统有哪几部分组成(机器视觉系统价格)
  8. Java类数组初始化
  9. 响铃:微盟携向蜜岛推出“智慧酒店”,酒店真的能摆脱OTA吗?
  10. 全球4亿条用户电话号码曝光 Facebook再曝巨大安全漏洞