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

时间:2012-05-23 19:25:29

标签: c++ linux tbb

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

在TBB网页中,有一些关于如何执行此操作的指南,例如设置LD_LIBRARY_PATH和CPATH变量,或者获取 tbbvars.sh 文件。即使我这样做,当我尝试编译示例时, g ++ 表示找不到 tbb

所以问题是如果它是如何设置所有东西(编译源代码,我应该设置哪些变量......)以便使用TBB的简单方法。

感谢。

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

2 个答案:

答案 0 :(得分:17)

我已经找到了解决方案。我会在这里发布,所以它会帮助其他人这个话题。

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
  5. 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++

答案 1 :(得分:1)

https://github.com/wjakob/tbb似乎是解决之道。

git clone https://github.com/wjakob/tbb.git
cd tbb/build
cmake ..
make -j
sudo make install