2011-04-18 13 views
8

He instalado ya con bjam instalar, pero cuando estoy programa de compilación: se producenbibliotecas Boost Boost.Asio problema de instalación

#include boost/asio.hpp 

int main() 
{ 
return 0; 
} 

este tipo de errores:

/tmp/ccVR3eeF.o: In function `__static_initialization_and_destruction_0(int, int)': 
sda.cpp:(.text+0x52): undefined reference to `boost::system::generic_category()' 
sda.cpp:(.text+0x5e): undefined reference to `boost::system::generic_category()' 
sda.cpp:(.text+0x6a): undefined reference to `boost::system::system_category()' 
/tmp/ccVR3eeF.o: In function `boost::asio::error::get_system_category()': 
sda.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x5): undefined reference to `boost::system::system_category()' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr_create(unsigned int&)': 
sda.cpp:(.text._ZN5boost4asio6detail20posix_tss_ptr_createERj[boost::asio::detail::posix_tss_ptr_create(unsigned int&)]+0x19): undefined reference to `pthread_key_create' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service>::context>::~posix_tss_ptr()': 
sda.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_15task_io_serviceEE7contextEED2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service>::context>::~posix_tss_ptr()]+0x15): undefined reference to `pthread_key_delete' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl>::context>::~posix_tss_ptr()': 
sda.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_14strand_service11strand_implEE7contextEED2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl>::context>::~posix_tss_ptr()]+0x15): undefined reference to `pthread_key_delete' 
collect2: ld returned 1 exit status 

¿Qué tengo que hacer ? ¿Cómo puedo construir esas bibliotecas?

Respuesta

7

Boost.Asio también necesita la biblioteca Boost.System; necesita agregar -lboost_system a su línea de comando del enlazador.

Al agregar funciones a su programa, es posible que también necesite otras partes de Boost, como Boost.Thread, Boost.Date_Time, y más. Vea http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/using.html para más detalles.

0

Uso netbeans así que escribí '-lboost_system' en líneas adicionales. Eso fue un error.

Las líneas adicionales se colocan antes que los objetos, y debido a eso tuve el mismo error. Luego descubrí que si corro desde la consola y pongo -lboost_system al MUY FINAL, todo funciona mejor. Al final encontré el lugar correcto para establecer en netbeans (en la biblioteca, no en la sección de comandos) ¡y ese campo lo agrega al final!

Recuerde, no solo cuenta si tiene la biblioteca al mando. LA POSICIÓN sí cuenta :) Recuerde poner biblioteca al fin y verificarlo :)

un gran trabajo:

g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp 
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -o async_client async_client.o -lws2_32 -lboost_chrono -lboost_system -lboost_thread 

No funciona:

g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp 
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -lws2_32 -lboost_chrono -lboost_system -lboost_thread -o async_client async_client.o 
+0

¿Es esta una pregunta ??? – Michael

+1

Esta respuesta es difícil de leer. No estoy lo suficientemente familiar como para editarlo yo mismo. –