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

15

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

TBB网页中提供了一些指南,例如设置LD_LIBRARY_PATHCPATH变量,或者运行tbbvars.sh文件。即使我这样做,当我尝试编译一个示例时,g++会显示未找到tbb

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

谢谢。

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


2
你已经尝试了什么?有TBB的文档吗?最重要的是:TBB是什么?你能更具体一些吗? - Gnosophilon
4
你可以将鼠标移动到标签上,找出TBB是什么。 - Stephan Dollberg
./configure; make; sudo make install ./configure;make;sudo make install - user529758
值得注意的是,在Ubuntu 19.10中,只需执行一次“sudo apt install”即可使所有内容正常工作:https://dev59.com/JlUK5IYBdhLWcg3w_z20#55989883 - Ciro Santilli OurBigBook.com
2个回答

28

我已经想出了解决方案。我会在这里发布,以帮助其他有这个问题的人。

  1. 下载最新稳定的源代码并解压缩到 ~/tbbsrc 目录下。

  2. 进入该目录,并输入 make 命令。它会开始编译 tbb 库和内存分配器。

  3. 头文件在 ~/tbbsrc/include 目录下。

  4. ~/tbbsrc/build 目录下将会创建两个新的文件夹,一个用于 release 版本,另一个用于 debug 版本。这些文件夹的名称类似于 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

注意:使用 -Wl,-rpath,$TBB_LIBRARY_RELEASE,我们告诉动态链接器在哪里找到 libtbb.so

  1. 这样应该可以正常工作!

最好的祝愿!

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

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


1
是的。这就是为什么你必须通过-Wl传递它,以便链接器“识别”它。这在Ubuntu和Windows上使用g++ 4.4g++ 4.7进行了测试。我还没有用更新的版本进行测试。 - Adri C.S.
但是-W1不仅仅是提供警告信息的选项吗?我没有编写那个选项,所以很好奇... :) - Andry
1
或者...等等,它不是W1而是Wl... l代表“链接器”!!!是的!明白了!!!抱歉并非常感谢。 - Andry
1
哈哈,这很棘手吧?我也有问题分辨它们 :D - Adri C.S.
1
当您使用Apple clang版本5.1时,不要输入make,而是输入make compiler=clangmake compiler=clang stdlib=libc++ - rwols
显示剩余2条评论

11

https://github.com/wjakob/tbb 似乎是正确的方法。

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

谢谢!比英特尔的git分发要容易得多,后者没有安装程序。我建议也运行“make test”,以防万一。 - mathog
安装完成后,我的运行时期望找到 libtbb.so.2,但是它却丢失了。 - Richard Whitehead
我通过在/etc/ld.so.conf中添加以下行:/opt/intel/openvino_2021.1.110/deployment_tools/inference_engine/external/tbb/lib/,然后调用ldconfig来修复了缺失的文件。 - Richard Whitehead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接