为 Open Street Routing Machine 安装线程构建块
Installing Threading Building Blocks for Open Street Routing Machine
我正在尝试在 RaspberryPi 2 运行 Raspbian 上构建开放式街道路由机。但是,它需要 Threading Building Blocks 库。我已经尝试了几个 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)
TBB makefile 不支持系统范围的安装。它既不将文件放在 /opt
中,也不将文件放在 /usr
中。这通常由英特尔 Composer/Compiler/Parallel Studio 安装程序(在 /opt/intel
中)或 Linux 发行版本身(在 /usr
中)完成。但是您的发行版似乎没有提供用于安装的 tbb 包。
因此,如果您想使用自己编译的 TBB 二进制文件,请转到 $TBBROOT/build/linux*_release/
目录和 source tbbvars.sh
脚本,以便在编译你的程序之前设置你的环境(你将能够编译 TBB 示例):
$source ./tbbvars.sh
或
$. ./tbbvars.sh
(注:直接执行什么都没有,因为不会修改你的环境)
不过,CMake 的 FindTBB 模块可能会愚蠢到仍然报告找不到 TBB,因为 TBB 并不正式支持 CMake。在这种情况下,您可能需要修复 FindTBB 模块以查看 TBB 路径的环境变量,或者通过复制共享库和包含文件到 CMake 期望它们所在的位置来手动执行类似系统范围的安装.
/opt/intel/tbb
中的文件布局如下(modified/shortened 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
我正在尝试在 RaspberryPi 2 运行 Raspbian 上构建开放式街道路由机。但是,它需要 Threading Building Blocks 库。我已经尝试了几个 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)
TBB makefile 不支持系统范围的安装。它既不将文件放在 /opt
中,也不将文件放在 /usr
中。这通常由英特尔 Composer/Compiler/Parallel Studio 安装程序(在 /opt/intel
中)或 Linux 发行版本身(在 /usr
中)完成。但是您的发行版似乎没有提供用于安装的 tbb 包。
因此,如果您想使用自己编译的 TBB 二进制文件,请转到 $TBBROOT/build/linux*_release/
目录和 source tbbvars.sh
脚本,以便在编译你的程序之前设置你的环境(你将能够编译 TBB 示例):
$source ./tbbvars.sh
或
$. ./tbbvars.sh
(注:直接执行什么都没有,因为不会修改你的环境)
不过,CMake 的 FindTBB 模块可能会愚蠢到仍然报告找不到 TBB,因为 TBB 并不正式支持 CMake。在这种情况下,您可能需要修复 FindTBB 模块以查看 TBB 路径的环境变量,或者通过复制共享库和包含文件到 CMake 期望它们所在的位置来手动执行类似系统范围的安装.
/opt/intel/tbb
中的文件布局如下(modified/shortened 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