c++ - SIGSEGV (Segmentation fault) when link boost-thread and boost-regex via cmake -


i try compile , run example of mongo-cxx-driver. requires linking boost-system, boost-thread , boost-regex. when compile commad line:

g++ simple_client_demo.cpp -i/home/ssi/mongo-client-install/include -l/home/ssi/mongo-client-install/lib -lmongoclient -lboost_system -lboost_thread -lboost_regex

all well. when try compile cmake, signal: sigsegv (segmentation fault) in /usr/include/c++/4.8/functional(2030 line _m_manager(_m_functor, _m_functor, __destroy_functor); if matter).

part of cmakelist.txt, link boost:

cmake_minimum_required(version 3.2) project(test_mongo_c_driver)  set(cmake_cxx_flags "${cmake_cxx_flags} -std=c++11")  include_directories("/home/ssi/mongo-client-install/include") link_directories("/home/ssi/mongo-client-install/lib") #link_directories("/usr/lib/x86_64-linux-gnu/") #add_library(mongoclient)  set(boost_use_static_libs off) set(boost_use_multithreaded off)  set(boost_use_static_runtime off) find_package(boost 1.54.0 required components thread system regex)  if(boost_found)     include_directories(${boost_include_dirs}) endif()   set(source_files     simple_client_demo.cpp #    tutor2.cpp     )  add_executable(test_mongo_c_driver ${source_files}) target_link_libraries(test_mongo_c_driver mongoclient ${boost_libraries}) 

ldd a.out (compile g++ command):

linux-vdso.so.1 =>  (0x00007fffd41b5000)         libboost_system.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 (0x00007f236fda7000)         libboost_thread.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.54.0 (0x00007f236fb91000)         libboost_regex.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.54.0 (0x00007f236f889000)         libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f236f585000)         libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f236f27f000)         libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f236f068000)         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f236eca3000)         /lib64/ld-linux-x86-64.so.2 (0x00007f236ffd2000)         librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f236ea9b000)         libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f236e87c000)         libicuuc.so.52 => /usr/lib/x86_64-linux-gnu/libicuuc.so.52 (0x00007f236e503000)         libicui18n.so.52 => /usr/lib/x86_64-linux-gnu/libicui18n.so.52 (0x00007f236e0fc000)         libicudata.so.52 => /usr/lib/x86_64-linux-gnu/libicudata.so.52 (0x00007f236c88e000)         libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f236c68a000) 

ldd test_mongo_c_driver (compile cmake):

linux-vdso.so.1 =>  (0x00007ffff7163000)         libboost_thread.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.54.0 (0x00007fc61ea28000)         libboost_system.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 (0x00007fc61e823000)         libboost_regex.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.54.0 (0x00007fc61e51c000)         libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc61e218000)         libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc61df11000)         libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc61dcfb000)         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc61d936000)         /lib64/ld-linux-x86-64.so.2 (0x00007fc61ec65000)         librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc61d72d000)         libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc61d50f000)         libicuuc.so.52 => /usr/lib/x86_64-linux-gnu/libicuuc.so.52 (0x00007fc61d196000)         libicui18n.so.52 => /usr/lib/x86_64-linux-gnu/libicui18n.so.52 (0x00007fc61cd8e000)         libicudata.so.52 => /usr/lib/x86_64-linux-gnu/libicudata.so.52 (0x00007fc61b521000)         libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc61b31c000) 

this simple_client_demo.cpp:

#include "mongo/client/dbclient.h" // mongo c++ driver  #include <iostream>  using namespace std; using namespace mongo;  int main(int argc, char *argv[]) {      if (argc > 2)     {         std::cout << "usage: " << argv[0] << " [mongodb_uri]" << std::endl;         return exit_failure;     }      mongo::client::globalinstance instance;     if (!instance.initialized())     {         std::cout << "failed initialize client driver: " << instance.status() << std::endl;         return exit_failure;     }      std::string uri = argc == 2 ? argv[1] : "mongodb://meowtom.ru:27017";     std::string errmsg;      connectionstring cs = connectionstring::parse(uri, errmsg);      if (!cs.isvalid())     {         std::cout << "error parsing connection string " << uri << ": " << errmsg << std::endl;         return exit_failure;     }      boost::scoped_ptr<dbclientbase> conn(cs.connect(errmsg));     if (!conn)     {         cout << "couldn't connect : " << errmsg << endl;         return exit_failure;     }      try     {         unsigned long long count = conn->count("test.users");         cout << "count of exiting documents in collection test.foo : " << count << endl;          conn->remove("test.foo", bsonobj());          bsonobj o = bson("hello" << "world");         conn->insert("test.users", o);         query query;         bsonobj ret = conn->findone("test.users", query);         std::cout << ret.tostring() << '\n';         string e = conn->getlasterror();         if (!e.empty())         {             cout << "insert #1 failed: " << e << endl;         }          // make index unique key constraint         conn->createindex("test.foo", indexspec().addkeys(bson("hello" << 1)).unique());          try         {             conn->insert("test.foo", o); // cause dup key error on "hello" field          }         catch (const operationexception &)         {             // duplicate key error         } //        cout << "we expect dup key error here:" << endl; //        cout << "  " << conn->getlasterrordetailed().tostring() << endl;     }     catch (dbexception &e)     {         cout << "caught dbexception " << e.tostring() << endl;         return 1;     }      return 0; } 

output make verbose=1:

/usr/local/bin/cmake -h/home/ssi/cppproj/test-mongo-c-driver -b/home/ssi/cppproj/test-mongo-c-driver --check-build-system cmakefiles/makefile.cmake 0 /usr/local/bin/cmake -e cmake_progress_start /home/ssi/cppproj/test-mongo-c-driver/cmakefiles /home/ssi/cppproj/test-mongo-c-driver/cmakefiles/progress.marks make -f cmakefiles/makefile2 make[1]: entering directory `/home/ssi/cppproj/test-mongo-c-driver' make -f cmakefiles/test_mongo_c_driver.dir/build.make cmakefiles/test_mongo_c_driver.dir/depend make[2]: entering directory `/home/ssi/cppproj/test-mongo-c-driver' cd /home/ssi/cppproj/test-mongo-c-driver && /usr/local/bin/cmake -e cmake_depends "unix makefiles" /home/ssi/cppproj/test-mongo-c-driver /home/ssi/cppproj/test-mongo-c-driver /home/ssi/cppproj/test-mongo-c-driver /home/ssi/cppproj/test-mongo-c-driver /home/ssi/cppproj/test-mongo-c-driver/cmakefiles/test_mongo_c_driver.dir/dependinfo.cmake --color= make[2]: leaving directory `/home/ssi/cppproj/test-mongo-c-driver' make -f cmakefiles/test_mongo_c_driver.dir/build.make cmakefiles/test_mongo_c_driver.dir/build make[2]: entering directory `/home/ssi/cppproj/test-mongo-c-driver' make[2]: nothing done `cmakefiles/test_mongo_c_driver.dir/build'. make[2]: leaving directory `/home/ssi/cppproj/test-mongo-c-driver' /usr/local/bin/cmake -e cmake_progress_report /home/ssi/cppproj/test-mongo-c-driver/cmakefiles  1 [100%] built target test_mongo_c_driver make[1]: leaving directory `/home/ssi/cppproj/test-mongo-c-driver' /usr/local/bin/cmake -e cmake_progress_start /home/ssi/cppproj/test-mongo-c-driver/cmakefiles 0 


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -