如何在Ubuntu 14.04中使用线程构建块

d3p*_*3pd 6 install tbb ubuntu-14.04

我想让TBB工作,但是我在编译Ubuntu 14.04时遇到了一些困难.我认为为编译器设置库的位置可能存在问题.

我使用以下命令安装TBB:

sudo apt-get install libtbb-dev
Run Code Online (Sandbox Code Playgroud)

我有一个小测试示例,我现在正在尝试编译.代码如下:

#include "tbb/task_scheduler_init.h"

int main(int argc, char* argv[]) {
    tbb::task_scheduler_init init;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在运行的编译此代码的命令如下:

g++ -std=c++11 -g -O2 -ltbb simple_test.cc -o simple_test
Run Code Online (Sandbox Code Playgroud)

我用G ++版本4.9.1运行它.当我尝试编译时,我收到以下错误:

/tmp/cc7Ls8Sb.o: In function `task_scheduler_init':
/usr/include/tbb/task_scheduler_init.h:126: undefined reference to `tbb::task_scheduler_init::initialize(int, unsigned long)'
/tmp/cc7Ls8Sb.o: In function `~task_scheduler_init':
/usr/include/tbb/task_scheduler_init.h:132: undefined reference to `tbb::task_scheduler_init::terminate()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

文件的位置task_scheduler_init.h/usr/include/tbb/task_scheduler_init.h.

你知道我做错了什么吗?


编辑:我重新排序了g ++的论据,这使它工作:

g++ simple_test.cc -std=c++11 -g -O2 -ltbb -o simple_test
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么这种改变使编译成功.