【问题标题】:Gflags Compile time errorGflags 编译时错误
【发布时间】:2017-06-08 13:54:26
【问题描述】:

我正在尝试编译其中包含 GFLAGS 的文件。 我的编译命令:

g++ -I ../eigen-eigen-b9cd8366d4e8/ -I/caffe_path/distribute/include  my_file.cpp -std=c++0x   -lpthread -lglog -lboost_system -DUSE_OPENCV 

我的错误信息是:

/usr/bin/ld: /tmp/ccv5GAaZ.o: undefined reference to symbol '_ZN6google26ShowUsageWithFlagsRestrictEPKcS1_'
//usr/lib/x86_64-linux-gnu/libgflags.so.2: error adding symbols: DSO missing from command line

这是我第一次与 Gflags 合作。根据互联网上的建议,我尝试在以下几行中用#ifndef 和#endif 评论行,但没有帮助。

#ifndef GFLAGS_GFLAGS_H_
  namespace gflags = google;
#endif

我也尝试过对此 thread 的建议,但没有解决任何问题。

【问题讨论】:

  • 当我遇到这种类型的错误时,结果是我正在加载的库版本不一致。检查您的 LDD_LIBRARY_PATH 以确保您获得每个模块的正确版本。您也可以在一些有用的对象上尝试ldd。检查您的整体环境是否存在不一致,并确保您拥有sourced 正确的 *vars.sh 文件。
  • 我最近下载了我的操作系统(Ubuntu 16.04)并安装了所有库。所以我不太认为关于过时的库可能存在一些不一致之处。可能正如您所说,由于其他原因,仍然存在一些不一致之处。 LDD_LIBRARY_PATH 和正确的 *vars.sh 文件是什么意思。
  • 我在其中添加了一个额外的“D”;它应该是LD_LIBRARY_PATH。它是一个标准环境变量,控制库加载首选项。一些工具在其 $_HOME/bin 目录中有一个名为 <tool>vars.sh 的脚本;对于这些工具,您(或构建脚本)需要获取文件以正确设置路径变量。例如,MKL(英特尔的数学内核库)就有一个。
  • 当我命令这个echo $LD_LIBRARY_PATH它什么也不打印
  • 这让我很担心——但我在人口密集的环境中工作。我不知道你应该拥有什么,因为我不知道你已经拥有什么;我只是想为比我更了解你的 Caffe 内部结构的人收集信息。

标签: caffe gflags


【解决方案1】:

安装在 caffe 中的 gflags 以某种方式导致了冲突。卸载其中任何一个都没有帮助。对我来说,解决方案是卸载(全部)整个 caffe 和 gflags(内部和外部)解决了这个问题。当我确定我的系统上没有 gflags/glogs 和 caffe 的痕迹时,我能够再次安装 caffe。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2013-05-18
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多