在构建支持Caffe解析器的ArmNN时遇到问题

我已经为此努力了很长时间。主要是按照这个教程进行操作。我按照说明构建了所需版本的依赖,主要是boost和caffe(这两者还包含许多其他依赖)。我在一台全新安装的Ubuntu 19.10虚拟机上运行整个项目(专门为这个项目设置)。当我进行到构建ArmNN库的步骤(说明部分“构建环境”,第4步)时,在大约45%的进度上链接libarmnn.so失败,并显示以下错误输出:

/usr/bin/ld: */path/to/boost*/boost_1_64_0/stage/lib/libboost_log.a(attribute_name.o): relocation R_X86_64_PC32 against symbol `_ZTVN5boost16exception_detail19error_info_injectorINS_3log12v2s_mt_posix16limitation_errorEEE' can not be used when making a shared object; recompile with -fPIC/usr/bin/ld: final link failed: bad valuecollect2: error: ld returned 1 exit statusmake[2]: *** [libarmnn.so.19.11] Error 1make[1]: *** [CMakeFiles/armnn.dir/all] Error 2make: *** [all] Error 2

我已经使用cxx和c标志-fPIC构建了整个boost库。我特别检查了相关文件(使用ar -x libboost_log.a readelf --relocs attribute_name.o | egrep 'PLT',如这个问题的答案中所建议的)

关于如何处理这个错误或我应该注意什么的任何建议将不胜感激。

Patrick


回答:

经过几次尝试和另一个全新的虚拟机,我终于成功地交叉编译了支持Caffe解析器的ArmNN(从Ubuntu到Android)。如果你想做同样的事情,你需要自己编译很多依赖,并且要确保它们都是兼容版本的。当你(像我三周前那样)只是对这些库略知一二时,这说起来容易做起来难。以下是我用来编译的最重要的来源:

我经常忽略的最重要的一点是,当你在编译一个依赖时遇到一些缺失的子依赖时,千万不要走捷径。使用apt安装这些依赖通常是解决缺失库问题的最直接和正确的方法。但后来你会遇到库版本不匹配的问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注