Почему драйвер MongoDB C ++ не работает на SLES11?

Я работал над установкой драйверов MongoDB на Zlinux, и до сих пор у меня есть все для работы на большинстве систем Linux, кроме SLES11.

Теперь, чтобы получить код, мне пришлось сделать ряд обновлений GCC и Boost. Это означает, что система работает следующим образом:

test@ff6d8405cc0c:~/work> g++ --version
g++ (GCC) 5.2.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

test@ff6d8405cc0c:~/work> cat /usr/local/include/boost/version.hpp | grep "BOOST_LIB_VERSION"//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
#define BOOST_LIB_VERSION "1_58"test@ff6d8405cc0c:~/work> cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION"//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
#define BOOST_LIB_VERSION "1_36"

Так как у меня есть 2 варианта наддува, я установил свой путь следующим образом:

test@ff6d8405cc0c:~/work> echo $PATH
/home/test/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:.:/usr/local/include/:/usr/local/lib/

Но мой скрипт g ++ для проверки соединения с БД все еще не работает, это скрипт:

#include <cstdlib>
#include <iostream>
#include "mongo/client/dbclient.h" // for the driver

void run() {
mongo::DBClientConnection c;
c.connect("localhost");
}

int main() {
mongo::client::initialize();
try {
run();
std::cout << "connected ok" << std::endl;
} catch( const mongo::DBException &e ) {
std::cout << "caught " << e.what() << std::endl;
}
return EXIT_SUCCESS;
}

Моя установка драйвера MongoDB C ++ работает, как и ожидалось, с использованием следующих флагов scons:

sudo scons --prefix=/usr/local --disable-warnings-as-errors install

Но часть меня подозревает из-за ошибки, что вызывает неправильные библиотеки для boost. Как и когда я пытаюсь скомпилировать C ++, я просто получаю массу ошибок:

test @ ff6d8405cc0c: ~ / work> g ++ example-connect.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_program_options -lboost_system -lboost_regex -o пример-connect
/usr/local/lib/gcc/s390x-ibm-linux-gnu/5.2.0/../../../libmongoclient.a(dbclient.o): в функции boost::thread_exception::thread_exception(int, char const*)':
/usr/local/include/boost/thread/exceptions.hpp:51: undefined reference to
повышение :: системы :: system_category ()»
/usr/local/lib/gcc/s390x-ibm-linux-gnu/5.2.0/../../../libmongoclient.a(dbclient.o): в функции __static_initialization_and_destruction_0':
/usr/local/include/boost/system/error_code.hpp:221: undefined reference to
повышение :: системы :: generic_category ()»
/usr/local/include/boost/system/error_code.hpp:222: неопределенная ссылка на boost::system::generic_category()'
/usr/local/include/boost/system/error_code.hpp:223: undefined reference to
повышение :: системы :: system_category ()»
/usr/local/lib/gcc/s390x-ibm-linux-gnu/5.2.0/../../../libmongoclient.a(dbclient.o): в функции `boost :: re_detail :: perl_matcher<__gnu_cxx :: __ normal_iterator, std :: allocator>>, std :: allocator, std :: allocator>>>>, boost :: regex_traits>> :: match_prefix () ‘:

Я сам провел небольшое исследование, но я не уверен на 100%, что делать дальше, чтобы быть уверенным, что я вызываю все нужные компоненты.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]