2013-04-23 2 views
0

Загрузил самые последние коды из http://dl.mongodb.org/dl/cxx-driver и скомпилировал его как статическую библиотеку на Ubuntu 12.04 & 12.10. My GCC - 4.7, а CMake - как система сборки. Библиотека Boost: 1.48 на Ubuntu 12.04, 1.49 на Ubuntu 12.10.MongoDB 2.4 C++ драйвер вызывает ошибку связи

Затем мои два проекта успешно скомпилированы с библиотекой MongoDB клиента, но третий проект получил ошибку ссылки ниже:

Linking CXX executable cml_cloud 

/usr/lib/gcc/x86_64-linux-gnu/4.7/../ ../../../lib/libmongoclient.a(log.o): В функции mongo::LoggingManager::start(std::string const&, bool)': log.cpp:(.text._ZN5mongo14LoggingManager5startERKSsb[_ZN5mongo14LoggingManager5startERKSsb]+0x4c): undefined reference to boost :: filesystem3 :: detail :: status (boost :: filesystem3 :: path const &, boost :: system :: error_code *) ' log.cpp :(. text._ZN5mongo14LoggingManager5startERKSsb [_ZN5mongo14LoggingManager5startERKSsb] + 0x86): undefined ссылка на boost::filesystem3::detail::status(boost::filesystem3::path const&, boost::system::error_code*)' log.cpp:(.text._ZN5mongo14LoggingManager5startERKSsb[_ZN5mongo14LoggingManager5startERKSsb]+0xb8): undefined reference to boost :: filesystem3 :: detail :: status (boost :: filesystem3 :: path const &, boost :: system :: Эрро r_code *)» collect2: ошибка: л.д. возвращается статус 1 выхода марка [2]: * [бен/cml_cloud] Ошибка 1 Марка [1]: * [бен/CMakeFiles/cml_cloud.dir/все] Ошибка 2 : * [все] Ошибка 2

Я никогда не сталкивался с такими проблемами раньше. Как это решить?

ответ

0

Конечно, связывание имеет большое значение. Самые основные и важные библиотеки должны подниматься, и те, у кого много зависимостей, должны спуститься.

Прочитать здесь: http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html

+0

Благодарим за обмен этой документацией –

0

Я исправил его. Это не связано с библиотекой mongodb, я просто изменил порядок target_link_libraries в CMakeLists.txt.

Оригинальное утверждение:

target_link_libraries(cml_cloud ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} cppcms mongoclient booster loki cryptopp) 

Теперь он выглядит:

target_link_libraries(cml_cloud ${CMAKE_THREAD_LIBS_INIT} cppcms mongoclient booster loki cryptopp ${Boost_LIBRARIES}) 

теперь я счастлив, но кто-нибудь знает, почему он исправляет эту проблему?