资讯专栏INFORMATION COLUMN

caffe 以及caffe2 安装时portobuf库相关的编译问题

Mr_zhang / 1045人阅读

摘要:安装出现版本问题,是由于安装了不同的版本出现相关的问题,重新编译安装自己编译时出现错误问题原因是用了默认的安装方式以下代码,如此生成的静态库不是,所以不能被其它库使用位的必须使用编译选项,所以要求所链接的静态库也必须是编译。

安装caffe出现protobuf版本问题,是由于anaconda安装了不同的protobuf版本

pip show protoc
protoc --version

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install python-protobuf

出现icu相关的问题,重新编译安装

http://www.linuxfromscratch.o...

protobuf自己编译时出现a local symbol" can not be used when making a shared object; recompile with -fPIC错误 问题原因

 是用了protobuf默认的安装方式(以下代码),如此生成的静态库libprotobuf.a不是PIC object,所以不能被其它库使用(64位的so必须使用-fPIC编译选项,所以要求所链接的静态库也必须是-fPIC编译)。

./autogen.sh
./configure --prefix=INSTALL_PTAH    
./make
./make install
解决方法

confiure步骤时加上两个变量参数:

./configure CFLAGS="-fPIC" CXXFLAGS="-fPIC --prefix=INSTALL_PATH

注意重新配置后需要make clean 清除一下原有的生成文件才有用

 编译caffe2出现from google.protobuf import symbol_database as _symbol_database错误 问题原因

编译的protobuf没有安装到python环境中

解决方法

按照上述方法下再protobuf3.5.0版本后重新安装

cd PROTOBUF_PATH/python
python setup.py build 
sudo python setup.py isntall
编译caffe2出现以下问题

../lib/libgtest.a(gtest-all.cc.o):在函数‘testing::internal::FormatDeathTestOutput(std::string const&)’中:
gtest-all.cc:(.text+0xca9):对‘std::__throw_out_of_range_fmt(char const*, ...)’未定义的引用
gtest-all.cc:(.text+0xce3):对‘std::__throw_out_of_range_fmt(char const*, ...)’未定义的引用
../lib/libgtest.a(gtest-all.cc.o):在函数‘testing::TestResult::GetTestPartResult(int) const’中:
gtest-all.cc:(.text+0x1faf):对‘std::__throw_out_of_range_fmt(char const*, ...)’未定义的引用
../lib/libgtest.a(gtest-all.cc.o):在函数‘testing::TestResult::GetTestProperty(int) const’中:
gtest-all.cc:(.text+0x230f):对‘std::__throw_out_of_range_fmt(char const*, ...)’未定义的引用
../lib/libgtest.a(gtest-all.cc.o):在函数‘testing::internal::UnitTestImpl::ConfigureStreamingOutput()’中:
gtest-all.cc:(.text+0x1bffe):对‘std::__throw_out_of_range_fmt(char const*, ...)’未定义的引用
../lib/libgtest.a(gtest-all.cc.o):gtest-all.cc:(.text+0x1d2d7): 跟着更多未定义的参考到 std::__throw_out_of_range_fmt(char const*, ...)
../lib/libcaffe2.so:对‘std::thread::_M_start_thread(std::shared_ptr, void (*)())’未定义的引用
../lib/libcaffe2.so:对‘__cxa_throw_bad_array_new_length’未定义的引用

问题原因

ubuntu14.0默认的gcc g++版本是4.8 需要升级到4.9

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
为Cmake 指定gcc g++版本 方法1:修改环境变量

修改环境变量,但是但是不一定都有用
export CC=/usr/local/bin/gcc-4.9
export CXX=/usr/local/bin/g++-4.9

方法2: 命令行设置cmake参数

cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc-4.9 -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-4.9 ..

方法3:在CMakeList中设置变量

set(CMAKE_C_COMPILER "/usr/local/bin/gcc-4.9")
set(CMAKE_CXX_COMPILER "/usr/local/bin/g++-4.9")

判断caffe2是否安装成功,正常情况打印Success

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

判断GPU是否正常,正常情况打印值为1

python2 -c "from caffe2.python import workspace; print(workspace.NumCudaDevices())"

自编译protobuf>=3.2.0
# CAFFE2=/path/to/caffe2
cd $CAFFE2/third_party/protobuf/cmake
mkdir -p build && cd build
cmake .. 
  -DCMAKE_INSTALL_PREFIX=$HOME/c2_tp_protobuf 
  -Dprotobuf_BUILD_TESTS=OFF 
  -DCMAKE_CXX_FLAGS="-fPIC"
make install
编译caffe2时调用
cmake .. 
  # insert your Caffe2 CMake flags here
  -DPROTOBUF_PROTOC_EXECUTABLE=$HOME/c2_tp_protobuf/bin/protoc 
  -DPROTOBUF_INCLUDE_DIR=$HOME/c2_tp_protobuf/include 
  -DPROTOBUF_LIBRARY=$HOME/c2_tp_protobuf/lib64/libprotobuf.a
安装mxnet时出现libgfortran.so.1找不到的问题

ImportError: libgfortran.so.1: cannot open shared object file: No such file or directory

解决方法
conda install libgfortran=1

conda 可以指定安装版本

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20292.html

相关文章

  • caffe 以及caffe2 安装portobuf相关编译问题

    摘要:安装出现版本问题,是由于安装了不同的版本出现相关的问题,重新编译安装自己编译时出现错误问题原因是用了默认的安装方式以下代码,如此生成的静态库不是,所以不能被其它库使用位的必须使用编译选项,所以要求所链接的静态库也必须是编译。 安装caffe出现protobuf版本问题,是由于anaconda安装了不同的protobuf版本 pip show protocprotoc --version...

    王伟廷 评论0 收藏0
  • 贾扬清撰文详解Caffe2:从强大新能力到入门上手教程

    摘要:英伟达作为的开发合作者,计划对的深度学习应用推出一系列博客文章。可使用的英伟达深度学习库和来实现高性能多加速训练和推理。最近的训练基准使用了块的英伟达和神经网络架构。 昨天,Facebook 推出了 Caffe2,一个兼具表现力、速度和模块性的开源深度学习框架。它沿袭了大量的 Caffe 设计,可解决多年来在 Caffe 的使用和部署之中发现的瓶颈问题。最终,Caffe2 打开了算法实验和新...

    galois 评论0 收藏0
  • 最新Github上各DL框架Star数量大PK

    摘要:下图总结了绝大多数上的开源深度学习框架项目,根据项目在的数量来评级,数据采集于年月初。然而,近期宣布将转向作为其推荐深度学习框架因为它支持移动设备开发。该框架可以出色完成图像识别,欺诈检测和自然语言处理任务。 很多神经网络框架已开源多年,支持机器学习和人工智能的专有解决方案也有很多。多年以来,开发人员在Github上发布了一系列的可以支持图像、手写字、视频、语音识别、自然语言处理、物体检测的...

    oogh 评论0 收藏0
  • Caffe2正式发布!新框架有何不同?贾扬清亲自解答

    摘要:贾扬清现身说法发布后,作者贾扬清在上连发四记解答。,贾扬清一上来就表明了身份。正式发布新框架有何不同贾扬清亲自解答有人问搞出意义何在现在已经有等诸多框架。贾扬清说和团队紧密合作。  图左为Caffe2作者贾扬清今天凌晨召开的F8大会上,Facebook正式发布Caffe2~随着人工智能的发展,在训练深度神经网络和大规模人工智能模型以及部署各机器的计算量时,通常要在大量数据中心或超级计算机的支...

    feng409 评论0 收藏0
  • Facebook开源深度学习框架Caffe2,带来跨平台机器学习工具

    摘要:部署旨在帮助开发人员和研究人员训练大规模机器学习模型,并在移动应用中提供驱动的用户体验。现在,开发人员可以获取许多相同的工具,能够在大规模分布式场景训练模型,并为移动设备创建机器学习应用。 AI 模型的训练和部署通常与大量数据中心或超级计算机相关联,原因很简单。从大规模的图像、视频、文本和语音等各种信息中持续处理、创建和改进模型的能力不是小型计算擅长的。在移动设备上部署这些模型,使其快速轻量...

    weapon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<