Пример кода Boost C ++ - статическая ошибка компиляции - PullRequest
2 голосов
/ 19 апреля 2011

Я новичок в использовании библиотек Boost C ++ и пытаюсь скомпилировать приведенный здесь пример кода Regex (http://www.boost.org/doc/libs/1_46_1/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library)

Это вывод, который я получаю:

     make
g++ -I /boost/include/ src/main.cpp -o main -L/boost/lib/ -lboost_regex -static
/boost/lib//libboost_regex.a(static_mutex.o): In function `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)':
static_mutex.cpp:(.text+0x1d): undefined reference to `pthread_mutex_lock'
/boost/lib//libboost_regex.a(static_mutex.o): In function `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()':
static_mutex.cpp:(.text+0x4e): undefined reference to `pthread_mutex_unlock'
/boost/lib//libboost_regex.a(static_mutex.o): In function `boost::scoped_static_mutex_lock::lock()':
static_mutex.cpp:(.text+0x76): undefined reference to `pthread_mutex_lock'
/boost/lib//libboost_regex.a(static_mutex.o): In function `boost::scoped_static_mutex_lock::unlock()':
static_mutex.cpp:(.text+0xa6): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale.o): In function `__gnu_cxx::__scoped_lock::~__scoped_lock()':
(.text._ZN9__gnu_cxx13__scoped_lockD2Ev[_ZN9__gnu_cxx13__scoped_lockD5Ev]+0x18): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale.o): In function `std::locale::_Impl::_M_install_cache(std::locale::facet const*, unsigned int)':
(.text._ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj+0x4c): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale.o): In function `std::locale::_Impl::_M_install_cache(std::locale::facet const*, unsigned int)':
(.text._ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj+0x80): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale_init.o): In function `std::locale::locale()':
(.text._ZNSt6localeC2Ev+0x41): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale_init.o): In function `std::locale::locale()':
(.text._ZNSt6localeC2Ev+0x5d): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale_init.o): In function `std::locale::global(std::locale const&)':
(.text._ZNSt6locale6globalERKS_+0x2d): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(locale_init.o): In function `std::locale::global(std::locale const&)':
(.text._ZNSt6locale6globalERKS_+0x94): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_allocate_exception':
(.text.__cxa_allocate_exception+0xbc): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_allocate_exception':
(.text.__cxa_allocate_exception+0x11a): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_free_exception':
(.text.__cxa_free_exception+0x6d): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_free_exception':
(.text.__cxa_free_exception+0x88): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_allocate_dependent_exception':
(.text.__cxa_allocate_dependent_exception+0x64): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_allocate_dependent_exception':
(.text.__cxa_allocate_dependent_exception+0xc0): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_free_dependent_exception':
(.text.__cxa_free_dependent_exception+0x70): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.a(eh_alloc.o): In function `__cxa_free_dependent_exception':
(.text.__cxa_free_dependent_exception+0x8b): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__register_frame_info_bases':
(.text+0x166e): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__register_frame_info_bases':
(.text+0x1685): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__register_frame_info_table_bases':
(.text+0x178a): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__register_frame_info_table_bases':
(.text+0x17a1): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__deregister_frame_info_bases':
(.text+0x188a): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `__deregister_frame_info_bases':
(.text+0x1904): undefined reference to `pthread_mutex_unlock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `_Unwind_Find_FDE':
(.text+0x19cb): undefined reference to `pthread_mutex_lock'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `_Unwind_Find_FDE':
(.text+0x1a1a): undefined reference to `pthread_mutex_unlock'
collect2: ld returned 1 exit status
make: *** [main] Error 1

К сожалению, мои ограниченные знания означают, что я не совсем понимаю, что все это значит. Может ли кто-нибудь пролить свет на это, пожалуйста? Весьма признателен :) -tech

1 Ответ

3 голосов
/ 19 апреля 2011
g++ -I /boost/include/ src/main.cpp -o main -L/boost/lib/ -lboost_regex -lpthread -static
                                                                        ^^^^^^^^^
...