2015-11-06 28 views
0

我正试图在运行Raspbian的RaspberryPi 2上构建开放路由路由机。但是,它需要线程构建模块库。我尝试了几个apt-get命令,但它一直告诉我它找不到存储库。具体来说,它说:开放街道路由机的安装线程构建模块

Package libtbb-dev is not available,but is refered to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 
E: Package 'libtbb-dev' has no installation candidate. 

我终于打破并下载了TBB源并建立了它。从我所知道的,线程构建块成功构建,但试图构建OSRM我仍然得到TBB库无法找到的错误。我尝试将构建的TBB目录复制到我认为OSRM正在寻找它们的位置(“/ opt/intel/tbb”,“/ usr/include”),但没有任何工作。

有没有人知道我可能会做错什么?

编辑:这是试图建立OSRM当我收到错误:

ERROR: Intel TBB NOT found! 
-- Looked for Threading Building Blocks in  /opt/intel/tbb;/usr/local/include;/usr/include 
CMake Error at cmake/FindTBB.cmake:272 (message): 
    Could NOT find TBB library. 
Call Stack (most recent call first): 
    CMakeLists.txt:191 (find_package) 
+0

你能至少提供相关的错误信息? – scai

+1

错误:找不到Intel TBB! - 在/ opt/intel/tbb;/usr/local/include;/usr/include中查找线程构建块找不到TBB库。 调用堆栈(最近呼叫优先): CMakeLists.txt:191(find_package) – thedude

+0

这可能不会真正帮助您解决当前问题,但可以帮助您获得某些内容;)https://karussell.wordpress.com/2014/ 01/09/road-routing-on-raspberry-pi-with-graphhopper/ – Karussell

回答

1

TBB makefile文件不支持全系统安装。它将文件既不在/opt也不在/usr。这通常由Intel Composer/Compiler/Parallel Studio安装程序(位于/opt/intel)或Linux发行本身(位于/usr)完成。但你的发行版似乎不提供安装tbb软件包。

所以,如果你想用你自己编译TBB的二进制文件,去$TBBROOT/build/linux*_release/目录和tbbvars.sh脚本从那里以设置您的环境编译程序之前,(你将能够编译TBB的例子) :

$ source ./tbbvars.sh

$ . ./tbbvars.sh

(注意:由于你的环境不会被修改,因此你的环境将不会被修改)

尽管CMake的FindTBB模块可能足够愚蠢,仍然会报告TBB没有找到,因为TBB并没有正式支持CMake。在这种情况下,您可能需要修复FindTBB模块以查看TBB路径的env变量,或者通过将共享库和包含文件复制到CMake期望它们位于的位置来手动执行系统范围的安装。

文件中/opt/intel/tbb布局如下(修改/缩短ls -R输出):

/opt/intel/tbb/: 
/opt/intel/tbb/include: 
#copy tbb includes here 
/opt/intel/tbb/include/tbb: 
*.h 
/opt/intel/tbb/include/tbb/compat: 
*.h 
/opt/intel/tbb/include/tbb/internal: 
*.h 
/opt/intel/tbb/include/tbb/machine: 
*.h 
/opt/intel/tbb/lib: 
/opt/intel/tbb/lib/ia32_lin: 
/opt/intel/tbb/lib/ia32_lin/gcc4.1: 
/opt/intel/tbb/lib/ia32_lin/gcc4.1/irml: 
/opt/intel/tbb/lib/ia32_lin/gcc4.4: 
/opt/intel/tbb/lib/ia32_lin/gcc4.4/irml: 
/opt/intel/tbb/lib/intel64_lin: 
/opt/intel/tbb/lib/intel64_lin/gcc4.1: 
/opt/intel/tbb/lib/intel64_lin/gcc4.1/irml: 
/opt/intel/tbb/lib/intel64_lin/gcc4.4: 
irml/     libtbbmalloc_proxy_debug.so libtbbmalloc.so.2   libtbb.so 
libtbb_debug.so   libtbbmalloc_proxy_debug.so.2 libtbb_preview_debug.so libtbb.so.2 
libtbb_debug.so.2  libtbbmalloc_proxy.so   libtbb_preview_debug.so.2 
libtbbmalloc_debug.so libtbbmalloc_proxy.so.2  libtbb_preview.so 
libtbbmalloc_debug.so.2 libtbbmalloc.so    libtbb_preview.so.2 
+0

我很难确定cmake正在寻找什么。我试图将我的tbb文件夹的全部内容复制到预期的目录中,但仍然收到相同的错误。我试过只复制tbb文件夹的一部分(特别是库),但没有改变。 ,还有,你是什么意思的来源'tbbvars.sh'?我运行了tbbvars.sh并且没有显示错误,所以我假设环境变量已经设置好了。在再次运行之前,我是否需要修改它? – thedude

+0

@thedude我已将补充说明添加到答案中。 – Anton

+0

所以你做错了。执行'tbbvars.sh'什么也不做,你想通过发送到你当前的shell来'包括'它。并且复制不起作用,因为目录和文件有不同的布局 – Anton

相关问题