我想知道如何从源代码安装 TBB 并使其在 Linux 系统上运行。我在使用它时遇到了一些问题,如果我通过包管理器安装 TBB 则不会出现这些问题。
在 TBB 网页中,有一些关于如何执行此操作的指南,例如设置 LD_LIBRARY_PATH
和 CPATH
变量,或采购 tbbvars.sh
文件。即使我这样做了,当我尝试编译一个示例时,g++
也会提示找不到 tbb
。
所以我的问题是,是否有一种简单的方法来设置所有内容(编译源代码、我应该设置哪些变量...)以便使用 TBB?
谢谢。
注意: 提出这个问题时库的版本号是 2(如果我没记错的话)。我亲自测试了 4.1 版之前的解决方案,但我认为它应该也适用于当前版本 4.2(更新 3)
,因为构建方法保持不变。
最佳答案
我带来了解决方案。我会将其张贴在这里,以帮助其他人解决此主题。
下载最新的稳定源码并解压,即在
~/tbbsrc
在里面,输入
make
。它应该开始编译 tbb 库和内存分配器。header 在
~/tbbsrc/include
~/tbbsrc/build
内将有两个新文件夹,一个用于发布版本,另一个用于调试版本。这些文件夹的名称类似于architecture_ldVersion_g++Version_kernelVersion
。我建议设置一些变量,例如在您的
~/.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
- 让我们尝试一个简单的例子:
// 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;
}
- 例如,使用发布版本进行编译:
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 findlibtbb.so
- 那应该没问题!
最好的问候!
Apple clang 5.1 的安装: [感谢 rwols 提供的信息]
不要键入 make
,而是键入 make compiler=clang
或 make compiler=clang stdlib=libc++
关于c++ - 如何在 Linux 上从源代码安装 TBB 并使其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726537/