2010-06-13 15 views
24

Non mi è chiaro quali siano le opzioni di collegamento per la libreria Boost.Thread 1.34.1. Sono su Ubuntu 8.04 e ho scoperto che quando si utilizza sia boost_thread o boost_thread-mt durante il collegamento sia compilare ed eseguire, ma non vedo alcuna documentazione su queste o altre opzioni di collegamento nel link sopra.Boost.Thread Linking - boost_thread vs. boost_thread-mt

Quali opzioni di collegamento Boost.Thread sono disponibili e cosa significano?

+0

Perché stai costruendo 1.34.1 invece di 1.43.1? – Puppy

+0

@DeadMG: Perché questo è ciò che viene fornito con Ubuntu 8.04 e non ho la possibilità di compilare e installare una versione più recente. –

risposta

33

Beh ...

La prima cosa divertente è che il modificatore di -mt nel nome è quello di indicare la libreria è Ok per il multithreading. Il che ci potrebbe portare a credere che boost_thread (senza questo modificatore) potrebbe essere multithread-non sicuro ...

Ma la cosa vera è che (come visto sulla mia Ubuntu 10.04 box), boost_thread è un link simbolico a boost_thread-mt, il che significa che i due sono la stessa cosa.

Se si desidera verificare, è possibile aprire una console sul vostro ubuntu (fare il fullscreen console perché i nomi sono lunghi), quindi digitare:

cd /usr/lib 

per passare alla directory in cui le librerie Boost siamo. E poi:

ls -l ./libboost_thread* 

che elenca tutti i file che iniziano con libboost_thread, con le informazioni additionnal. Il risultato sarà qualcosa di simile:

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

Come si può vedere, libboost_thread.a è una libreria statica, e libboost_thread-mt.a è un link simbolico a libboost_thread.a