Caffe编译错误:gflags.cc'正在静态和动态地链接到此可执行文件中

mad*_*mad 3 c++ makefile gflags deep-learning caffe

我正在尝试按照本教程安装caffe

基本上我输入最后一个make命令时出现以下错误:

me@dl-01:/home/me/caffe-master$ make runtest

.build_release/tools/caffe

caffe: command line brew

usage: caffe command args

commands:

train           train or finetune a model

test            score a model

device_query    show GPU diagnostic information

time            benchmark model execution time

Flags from tools/caffe.cpp:
 -gpu (Run in GPU mode on given device ID.) type: int32 default: -1
 -iterations (The number of iterations to run.) type: int32 default: 50
 -model (The model definition protocol buffer text file..) type: string
      default: ""
 -snapshot (Optional; the snapshot solver state to resume training.)
 type: string default: ""
 -solver (The solver definition protocol buffer text file.) type: string
 default: ""
 -weights (Optional; the pretrained weights to initialize finetuning. Cannot
      be set simultaneously with snapshot.) type: string default: ""
.build_release/test/test_all.testbin 0 --gtest_shuffle 
ERROR: something wrong with flag 'flagfile' in file '/root/glog-0.3.3/gflags-master/src/gflags.cc'.  One possibility: file '/root/glog-0.3.3/gflags-master/src/gflags.cc' is being linked both statically and dynamically into this executable.
make: *** [runtest] Error 1
Run Code Online (Sandbox Code Playgroud)

我不明白如何解决这个错误.有人之前发现过这个错误吗?我怎么解决呢?

mpl*_*plf 10

无论你是否已经在其他地方解决了这个问题,我都会在这里发布答案,以防其他人遇到同样的问题.

首先,这个问题似乎已经出现,因为我们并不总是正确阅读事物并盲目地遵循所有指示,认为它们都适用于我们的案例.提示:他们没有.

在Caffe的安装说明中(假设Ubuntu说明),有一节说明:

一切都打包在14.04.

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
Run Code Online (Sandbox Code Playgroud)

盲目地忽略下一个标题,其中明确指出:

剩余的依赖关系,12.04

我们继续安装这些依赖项,根据需要进行构建和安装,导致出现两个版本的libgflags,一个动态(/usr/lib[/x86_x64]一个静态和一个静态)的不幸副作用/usr/local/lib

解析度

  1. 我们自己承诺失败,下次我们会正确阅读说明.
  2. 卸载libgflags

    sudo apt-get remove -y libgflags
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除make install版本

    sudo rm -f /usr/local/lib/libgflags.a /usr/local/lib/libgflags_nothreads.a
    sudo rm -rf  /usr/local/include/gflags
    
    Run Code Online (Sandbox Code Playgroud)
  4. 清洁Caffe构建

    cd <path>/<to>/caffe
    make clean
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新安装libgflags包

    sudo apt-get install -y libgflags-dev
    
    Run Code Online (Sandbox Code Playgroud)
  6. 重建Caffe

    make all
    make test
    make runtest
    
    Run Code Online (Sandbox Code Playgroud)

Et Voila.现在所有的测试都应该进行,你就可以开始学习深度学习的船了.