2010-06-13 12 views
24

Il n'est pas clair pour moi quelles options de liaison existent pour la bibliothèque Boost.Thread 1.34.1. Je suis sur Ubuntu 8.04 et j'ai trouvé que lors de l'utilisation de boost_thread ou boost_thread-mt lors de la liaison à la fois compiler et exécuter, mais je ne vois aucune documentation sur ces ou d'autres options de liaison dans le lien ci-dessus. Quelles options de liaison Boost.Thread sont disponibles et que signifient-elles?Boost.Thread Liaison - boost_thread vs boost_thread-mt

+0

Pourquoi construisez-vous 1.34.1 au lieu de 1.43.1? – Puppy

+0

@DeadMG: Parce que c'est ce qui arrive avec Ubuntu 8.04 et je n'ai pas la possibilité de compiler et d'installer une version plus récente. –

Répondre

33

Eh bien ...

La première chose amusante est que le modificateur -mt au nom est d'indiquer la bibliothèque est Ok pour le multithreading. Ce qui pourrait nous amener à croire que boost_thread (sans ce modificateur) pourrait être multithread dangereux ...

Mais la vraie chose est que (comme on le voit sur ma boîte Ubuntu 10.04), boost_thread est un lien doux pour boost_thread-mt, ce qui signifie que les deux sont une seule et même chose.

Si vous voulez vérifier, vous pouvez ouvrir une console sur votre ubuntu (faire le plein écran de la console parce que les noms sont longs), puis tapez:

cd /usr/lib 

de se déplacer dans le répertoire où les bibliothèques Boost sont. Et puis:

ls -l ./libboost_thread* 

qui liste tous les fichiers commençant par libboost_thread, avec des informations additionnelles. Le résultat sera quelque chose comme:

[...] ./libboost_thread.a 
[...] ./libboost_thread-mt.a -> libboost_thread.a 

Comme vous pouvez le voir, libboost_thread.a est une bibliothèque statique et libboost_thread-mt.a est un lien doux pour libboost_thread.a