2010-06-13 10 views
24

No tengo claro qué opciones de vinculación existen para la biblioteca Boost.Thread 1.34.1. Estoy en Ubuntu 8.04 y lo he encontrado al utilizar boost_thread o boost_thread-mt durante la vinculación de la compilación y la ejecución, pero no veo ninguna documentación sobre estas u otras opciones de enlace en el enlace anterior.Boost.Thread Linking - boost_thread vs. boost_thread-mt

¿Qué opciones de enlace de Boost.Thread están disponibles y qué significan?

+0

¿Por qué construyes 1.34.1 en vez de 1.43.1? – Puppy

+0

@DeadMG: Porque eso es lo que viene con Ubuntu 8.04 y no tengo la opción de compilar e instalar una versión más nueva. –

Respuesta

33

Bueno ...

La primera cosa divertida es que el modificador -mt en el nombre es para indicar la biblioteca está bien para multihilo. Lo que nos podría llevar a creer que boost_thread (sin este modificador) podría ser multi-hilo-insegura ...

Pero la realidad es que (como se ve en mi propia caja de Ubuntu 10.04), boost_thread es un enlace simbólico a boost_thread-mt, lo que significa que los dos son uno y lo mismo.

Si quieres comprobarlo, puede abrir una consola en sus ubuntu (hacer que la pantalla completa de la consola porque los nombres son largos), a continuación, escriba:

cd /usr/lib 

para ir al directorio en el que las bibliotecas Boost son. Y luego:

ls -l ./libboost_thread* 

el que figurarán todos los archivos a partir de libboost_thread, con la información additionnal. El resultado será algo como:

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

Como se puede ver, libboost_thread.a es una biblioteca estática, y libboost_thread-mt.a es un enlace simbólico a libboost_thread.a