2010-04-14 29 views
2

Je ne peux pas pour la vie de moi comprendre comment compiler et lier contre la bibliothèque Intel TBB sur mon Mac. J'ai exécuté le programme d'installation commercial et le script tbbvars.sh mais je ne peux pas comprendre cela. J'ai l'impression que c'est quelque chose de vraiment évident et ça fait juste un peu trop longtemps que j'ai fait ce genre de chose.Comment lier avec Intel TBB sur Mac OS X avec GCC?

tbb_test.cpp

#include <tbb/concurrent_queue.h> 

int main() { 
    tbb::concurrent_queue<int> q; 
} 

g++ tbb_test.cpp -I /Library/Frameworks/TBB.framework/Headers -ltbb

... ne peut pas trouver les symboles.

À la votre!

MISE À JOUR:

g++ tbb_test.cpp -I /Library/Frameworks/TBB.framework/Headers -L /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib

œuvres!

+0

@SilverSun, vous devriez toujours utiliser l'option "-framework" ... puisqu'il est équivalent, et il cherchera aussi dans tous les chemins du framework (ie il fonctionnera aussi si le framework est dans ~/Library/Frameworks ou/System/Library/Frameworks). L'option «framework» obtiendra tout, alors que vous auriez besoin de plus d'options que ce que vous utilisez –

Répondre

3

Puisque vous utilisez un cadre au lieu d'une bibliothèque traditionnelle, vous devez utiliser -framework, comme:

 
g++ tbb_test.cpp -o tbb_test -framework TBB 

Au lieu de:

 
g++ tbb_test.cpp -o tbb_test -I /Library/Frameworks/TBB.framework/Headers -ltbb 
+0

Merci, mais je n'ai pas réussi à faire fonctionner ça non plus.Merci! –

+0

'-framework' n'est pas beaucoup documenté dans la page de manuel, mais Je pense que cela indique que vous voulez * construire * un framework Ma meilleure théorie à propos de son problème est que 'tbb' a besoin de capitalisation – Potatoswatter

+0

@Potatoswatter," -framework "est dans la documentation sur Mac OS X (c'est une extension Apple à GCC). Cela signifie que vous voulez vous lier au framework, pas que vous voulez en construire un. Par exemple, pour créer un lien avec le framework Foundation, vous utilisez "-framework Foundation". –

0

Selon le TBB Getting Started Guide (page 3 la version actuelle), il y a quelques scripts dans le répertoire $ INSTALL/bin qui vont définir les bonnes variables d'environnement si vous exécutez source dessus (eg source bin/tbbvars.sh). Une fois que vous faites cela, vous n'avez plus besoin de spécifier -I et -L dans votre ligne de commande g++, ce qui est fastidieux, sujettes aux erreurs, et surtout laide. Mais vous devez toujours utiliser -ltbb: '(Ce conseil s'applique également à ceux qui utilisent d'autres systèmes d'exploitation de type Unix, tels que Linux