как заставить работать многопоточные строительные блоки в Ubuntu 14.04

Я хочу, чтобы TBB работал, но у меня возникли небольшие трудности с компиляцией в Ubuntu 14.04. Думаю, скорее всего проблема с установкой расположения библиотек для компилятора.

Я установил TBB с помощью следующей команды:

sudo apt-get install libtbb-dev

У меня есть небольшой тестовый пример, который я сейчас пытаюсь скомпилировать. Код выглядит следующим образом:

#include "tbb/task_scheduler_init.h"

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

Команда, которую я запускаю для компиляции этого кода, выглядит следующим образом:

g++ -std=c++11 -g -O2 -ltbb simple_test.cc -o simple_test

Я запускаю это с 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

Местоположение файла 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

Я действительно не понимаю, почему это изменение сделало компиляцию успешной.


person d3pd    schedule 02.09.2014    source источник
comment
Укажите параметр -L с путем к двоичным файлам libtbb.so.2.   -  person Anton    schedule 02.09.2014
comment
это легко. компоновщик работает за один проход и в порядке аргументов командной строки. Таким образом, на шаге, когда вы указывали библиотеку, компоновщик не находил к ней зависимостей и отбрасывал как неиспользуемые   -  person Anton    schedule 05.09.2014
comment
возможный дубликат порядка компоновщика - GCC   -  person Alexey Kukanov    schedule 03.10.2014