一尘不染

如何在Linux上从源代码安装TBB并使其正常工作

linux

我想知道如何从源代码安装TBB并使其在Linux系统上工作。使用它时,我遇到了一些问题,如果通过软件包管理器安装TBB,这些问题不会出现。

在TBB网页上,有一些有关如何执行此操作的准则,例如设置LD_LIBRARY_PATH和CPATH变量,或采购 tbbvars.sh
文件。即使我这样做,当我尝试编译一个例子 G ++ 说, TBB 是找不到的。

因此,问题是,是否有一种简单的方法可以设置所有内容(编译源代码,我应该设置哪些变量…)以便使用TBB。

谢谢。

注意: 询问此问题时的库版本号为2(如果我没记错的话)。我已经亲自测试了4.1版之前的解决方案,但是我认为它也应该适用于当前版本,4.2 (update 3)因为构建方法保持不变。


阅读 405

收藏
2020-06-07

共1个答案

一尘不染

我提供了解决方案。我将其张贴在此处,以帮助其他人解决此主题。

1)下载最新的稳定源代码并解压缩,即在〜/ tbbsrc中

2)在内部,键入make。它应该开始编译tbb库和内存分配器。

3)标头在〜/ tbbsrc / include中

4)〜/ tbbsrc / build内部将有两个新文件夹,一个用于发行版本,另一个用于调试版本。这些文件夹的名称类似于“
architecture_ldVersion_g ++ Version_kernelVersion”。

5)我建议设置一些变量,例如在.bashrc文件中,例如:

  1. TBB_INSTALL_DIR = $ HOME / tbbsrc
  2. TBB_INCLUDE = $ TBB_INSTALL_DIR / include
  3. TBB_LIBRARY_RELEASE = $ TBB_INSTALL_DIR / build / RELEASE_FOLDER
  4. TBB_LIBRARY_DEBUG = $ TBB_INSTALL_DIR / build / DEBUG_FOLDER

6)让我们尝试一个简单的例子:

// main.cpp
#include "tbb/task_scheduler_init.h"

int main(int argc, char* argv[]) {
  //  tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
  // implicit tbb::task_sheduler_init::automatic
  tbb::task_scheduler_init init;
  return 0;
}

7)例如,使用发行版进行编译:

g++ main.cpp -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb

通过这些,-Wl,-rpath,$TBB_LIBRARY_RELEASE我们告诉动态链接器在哪里可以找到libtbb.so

8)那应该很好!

最好的祝福!

安装Apple clang 5.1: [感谢rwols提供信息]

不用输入make,输入make compiler=clangmake compiler=clang stdlib=libc++

2020-06-07