c++ - 如何在 Linux 上从源代码安装 TBB 并使其工作

标签 c++ linux compilation installation tbb

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

在 TBB 网页中,有一些关于如何执行此操作的指南,例如设置 LD_LIBRARY_PATHCPATH 变量,或采购 tbbvars.sh 文件。即使我这样做了,当我尝试编译一个示例时,g++ 也会提示找不到 tbb

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

谢谢。

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

最佳答案

我带来了解决方案。我会将其张贴在这里,以帮助其他人解决此主题。

  1. 下载最新的稳定源码并解压,即在~/tbbsrc

  2. 在里面,输入make。它应该开始编译 tbb 库和内存分配器。

  3. header 在 ~/tbbsrc/include

  4. ~/tbbsrc/build 内将有两个新文件夹,一个用于发布版本,另一个用于调试版本。这些文件夹的名称类似于 architecture_ldVersion_g++Version_kernelVersion

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

TBB_INSTALL_DIR = $HOME/tbbsrc
TBB_INCLUDE = $TBB_INSTALL_DIR/include
TBB_LIBRARY_RELEASE = $TBB_INSTALL_DIR/build/RELEASE_FOLDER
TBB_LIBRARY_DEBUG = $TBB_INSTALL_DIR/build/DEBUG_FOLDER
  1. 让我们尝试一个简单的例子:
// 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;
}
  1. 例如,使用发布版本进行编译:
g++ main.cpp -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb

Note: with -Wl,-rpath,$TBB_LIBRARY_RELEASE, we are telling the dynamic linker where to find libtbb.so

  1. 那应该没问题!

最好的问候!

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

不要键入 make,而是键入 make compiler=clangmake compiler=clang stdlib=libc++

关于c++ - 如何在 Linux 上从源代码安装 TBB 并使其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726537/

相关文章:

c++ - 检查默认删除的函数模板是否明确专门用于特定类型?

c++ - 静态初始化 C++

c++ - 带有 QPushButton、QComboBox QCheckbox 的动态小部件列表

c - 使用两个子进程在我自己的 shell 中实现管道

linux - 即使在 Tomcat 重启后 PermGen 问题仍然存在(Linux,Tomcat 6.0.35)

c - Matlab mex 没有 xcode,但有独立的命令行工具

compilation - Chapel如何处理 "includes"

c++ - 拦截windows打开的文件

linux - 通过 unix 域套接字传递的数据是否跨越内核边界?

haskell - 如何设置使用 Stack 构建的 Haskell 项目的可执行输出位置?