【问题标题】:Running simple C++ programm using Caffe使用 Caffe 运行简单的 C++ 程序
【发布时间】:2017-01-28 14:21:20
【问题描述】:

我正在尝试使用 caffe 运行我的简单程序,但出现错误

#include <iostream>
#include <caffe/caffe.hpp>
#include <memory>
using namespace std;
using namespace caffe;

int main(int argc, char** argv) {
    shared_ptr<Net<float> > net_;

    string file_name="it doesn't matter ";

    net_.reset(new Net<float>(file_name, TEST));
// or just: Net<float>     caffe_test_net(file_name, TEST);
}

它的构建没有问题,但是当我运行程序时出现错误: 符号查找错误:/home/parrot/eclipse/workspace/Test_Caffe/Debug/Test_Caffe:未定义符号:_ZN5caffe3NetIfEC1ERKSsNS_5PhaseEPKS1_

我注意到:当我在代码 caffe::TEST 或 caffe::TRAIN 中使用时出现问题。我认为有一些问题与:caffe::Phase 有关。所以我不能创建 caffe::Net ,因为我不能使用 caffe::TEST。 当我使用 caffe 库中的其他类\函数...等时,不会产生此错误。

我使用 IDE: Eclipse 来构建项目。来自控制台的一些报告:

全部制作
构建文件:../src/Test_Caffe.cpp 调用:Cross G++ 编译器
g++ -I"/home/smilart/0_Intall/1 caffe-rc3/include/" -I/usr/local/cuda-7.5/include/ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Test_Caffe.d" -MT"src/Test_Caffe.o" -o "src/Test_Caffe.o" "../src/Test_Caffe.cpp" 完成构建:../src/Test_Caffe.cpp

构建目标:Test_Caffe 调用:Cross G++ Linker
g++ -L/usr/local/cuda/lib64/ -L"/home/smilart/0_Intall/1 caffe-rc3/build/lib/" -o "Test_Caffe" ./src/Test_Caffe.o -lboost_system -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lcudart -lcublas -lcurand -lboost_filesystem -lglog -lprotobuf -lcaffe 完成构建目标:Test_Caffe

【问题讨论】:

    标签: c++ eclipse gcc caffe


    【解决方案1】:

    目录/home/smilart/0_Intall/1 caffe-rc3/build/lib 不在动态加载器(加载动态库)查找的标准库搜索路径中。

    这个问题基本上有四种解决方案:

    1. 将库(和头文件)安装到系统目录中,系统加载程序会在其中查找库。然后重建。

    2. 通过编辑/etc/ld.so.conf,将目录/home/smilart/0_Intall/1 caffe-rc3/build/lib添加到加载程序要查看的路径,然后运行ldconfig程序。

    3. 修改环境变量LD_LIBRARY_PATH 以包含/home/smilart/0_Intall/1 caffe-rc3/build/lib。不过很少有人推荐这个解决方案。

    4. 修改构建命令,以便链接器将正确的路径嵌入可执行文件中的库。这必须通过将-Wl,-rpath,/home/smilart/0_Intall/1 caffe-rc3/build/lib 添加到链接器命令行来完成。这是在链接器的 Eclipse 项目设置中的某处完成的。

    我推荐最后一种解决方案。

    【讨论】:

    • 谢谢!!!在发布此问题之前,我尝试了前 3 个解决方案,但这无济于事。我也没有找到在 Eclipse 中准确添加 '-Wl,-rpath,/home/smilart/0_Intall/1 caffe-rc3/build/lib' 的选项(有几个安静的不同,他们没有帮助我) ,所以我在命令行中使用这个选项启动 g++ ......它的工作!
    【解决方案2】:

    只是另一种选择,您可以使用 nsight - 一个 Eclipse 版本的 nvidia 公司。以下是来自 caffe 官方 github 的一些说明:https://github.com/BVLC/caffe/wiki/IDE---Nvidia%E2%80%99s-Eclipse-Nsight

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多