Ubuntu 使用caffe解析器支持构建armNN时出现的问题

Ubuntu 使用caffe解析器支持构建armNN时出现的问题,ubuntu,machine-learning,makefile,cmake,arm,Ubuntu,Machine Learning,Makefile,Cmake,Arm,我做这件事已经有一段时间了。主要如下。我已经在说明书所要求的版本中构建了依赖项,这两个主要部分是being boost和caffe(这两个部分都需要大量其他依赖项)。 我正在新安装的Ubuntu19.10上运行整个程序(专门为这个项目在VM上安装)。 当我到达armNN库的构建(说明部分“构建环境”,第4步)时,链接libarmnn.so失败约45%,错误输出如下: /usr/bin/ld: */path/to/boost*/boost_1_64_0/stage/lib/libboost_log

我做这件事已经有一段时间了。主要如下。我已经在说明书所要求的版本中构建了依赖项,这两个主要部分是being boost和caffe(这两个部分都需要大量其他依赖项)。 我正在新安装的Ubuntu19.10上运行整个程序(专门为这个项目在VM上安装)。 当我到达armNN库的构建(说明部分“构建环境”,第4步)时,链接libarmnn.so失败约45%,错误输出如下:

/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 value
collect2: error: ld returned 1 exit status
make[2]: *** [libarmnn.so.19.11] Error 1
make[1]: *** [CMakeFiles/armnn.dir/all] Error 2
make: *** [all] Error 2
我已经用cxx和c标志-fPIC构建了整个boost库。我专门检查了有问题的文件(使用
ar-xlibboost\u log.a)
readelf--relocs属性_name.o | egrep'PLT'
如本问题的答案所示)

任何关于如何处理此错误的建议或关于我应该研究的提示都将不胜感激


Patrick

您一定错过了一些依赖项。我将建议您删除所有内容,并尝试重建它,并在使用make-j4时非常小心地遵循每个步骤。您可以用现有的核数替换4。并保持opencl=0 embed_kernels=0 neon=1,这样会更简单。

我又尝试了几次,又用了一个新的虚拟机,但我最终成功地交叉编译了带有caffe解析器支持的armnn(X从ubuntu到android)。 如果你想做同样的事情,有很多依赖项,你必须自己编译,你必须注意用兼容的版本编译它们。也就是说,当你(就像我3周前一样)刚刚熟悉了所有这些库时,说起来容易做起来容易。 以下是我用来编译的最重要的来源:

我经常忽略的最重要的部分是,当您编译依赖项并遇到一些缺少的子依赖项时,不要用简单的方法修复它。安装那些使用apt的设备,这通常是解决缺少库问题的直接而正确的方法。稍后,您将遇到不匹配的库问题