2012-05-23 19 views
7

Mi piacerebbe sapere come installare TBB dal sorgente e farlo funzionare su un sistema Linux. Ho avuto alcuni problemi quando viene utilizzato, problemi che non appaiono se installo TBB tramite il gestore pacchetti.Come installare TBB dal sorgente su Linux e farlo funzionare

Nella pagina web TBB, ci sono alcune linee guida su come per fare questo, come l'impostazione delle variabili LD_LIBRARY_PATH e cPath, o di sourcing il file tbbvars.sh. Anche se lo faccio, quando provo a compilare un esempio g ++ dice che tbb non è stato trovato.

Quindi la domanda è se è un modo semplice su come impostare tutto (compilare il codice sorgente, quali variabili dovrei impostare ...) per utilizzare TBB.

Grazie.

NOTA: Il numero di versione della libreria al momento della richiesta era 2 (se ricordo correttamente). Ho testato personalmente la soluzione fino alla versione 4.1, ma penso che dovrebbe funzionare anche per la versione corrente 4.2 (update 3) poiché il metodo di costruzione rimane lo stesso.

+2

Cosa hai provato già? C'è qualche documentazione per TBB? E la cosa più importante: cosa ** è ** TBB? Può essere più preciso? – Gnosophilon

+3

@Gnosophilon Puoi spostare il mouse sul tag e scoprire cosa è TBB – inf

+0

./configure; rendere; sudo make install –

risposta

15

Sono venuto con la soluzione. Lo posterò qui così aiuterà gli altri con questo argomento.

1) Scaricare l'ultima codice sorgente stabile e decomprimerlo, cioè in ~/tbbsrc

2) All'interno, tipo di make. Dovrebbe iniziare a compilare la libreria tbb e gli allocatori di memoria.

3) Le intestazioni sono in ~/tbbsrc/include

4) All'interno ~/tbbsrc/build saranno due nuove cartelle, una per la versione e l'altra per la versione di debug. Queste cartelle sono denominate "architecture_ldVersion_g ++ Version_kernelVersion".

5) vi consiglio di impostare alcune variabili, per esempio nel file .bashrc, come:

  1. TBB_INSTALL_DIR = $ HOME/tbbsrc
  2. TBB_INCLUDE = $ TBB_INSTALL_DIR/include
  3. TBB_LIBRARY_RELEASE = $ TBB_INSTALL_DIR/costruire/RELEASE_FOLDER
  4. TBB_LIBRARY_DEBUG = $ TBB_INSTALL_DIR/costruire/DEBUG_FOLDER

6) Proviamo un semplice esempio:

// 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; 
} 

7) Per compilare, ad esempio, con la versione di rilascio:

g++ main.cpp -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb 

Con -Wl,-rpath,$TBB_LIBRARY_RELEASE stiamo dicendo al linker dinamico dove trovare libtbb.so

8) E dovrebbe funzionare bene!

Cordiali saluti!

Installazione per Apple clang 5.1: [Grazie a rwols per le info]

Anziché digitare make, tipo make compiler=clang o make compiler=clang stdlib=libc++

+0

Bene l'opzione -rpath non è riconosciuta da g ++ ... è un'opzione ld ... – Andry

+1

Sì. Ecco perché è necessario passarlo con '-Wl', quindi il linker lo" riconosce ". Questo è stato testato sia su Ubuntu che su Windows con 'g ++ 4.4' e' g ++ 4.7'. Non l'ho provato con le versioni più recenti. –

+0

ma non è -W1 un'opzione che fornisce solo informazioni di avviso? Non ho scritto questa opzione quindi sono curioso ... :) – Andry

Problemi correlati