mongod: ошибка поиска символа: mongod: неопределенный символ: _ZN5boost6detail13once_epoch_cvE

Я испытываю затруднения из-за своей установки mongodb: когда я выполняю sudo mongod, я добираюсь mongod: symbol lookup error: mongod: undefined symbol: _ZN5boost6detail13once_epoch_cvE

uname -a
Linux xyz 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1+deb7u2 i686 GNU/Linux

which mongod
/usr/bin/mongod

ldd /usr/bin/mongod
    linux-gate.so.1 =>  (0xb76e7000)
    libpcrecpp.so.0 => /usr/lib/i386-linux-gnu/libpcrecpp.so.0 (0xb76b9000)
    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb767b000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb758e000)
    libboost_system.so.1.49.0 => /usr/lib/libboost_system.so.1.49.0 (0xb758a000)
    libboost_thread.so.1.49.0 => /usr/lib/libboost_thread.so.1.49.0 (0xb7565000)
    libboost_filesystem.so.1.49.0 => /usr/lib/libboost_filesystem.so.1.49.0 (0xb7546000)
    libboost_program_options.so.1.49.0 => /usr/lib/libboost_program_options.so.1.49.0 (0xb74de000)
    libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb74b7000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb749a000)
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb7481000)
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb731d000)
    /lib/ld-linux.so.2 (0xb76e8000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb7314000)
    libboost_system.so.1.57.0 => /lib/libboost_system.so.1.57.0 (0xb730f000)

Я переустановил libboost и mongodb, но без успеха. какая-либо идея, что продолжается?

BR /

5
задан 3 April 2015 в 00:41
1 ответ

Во-первых, с помощью команды

$ echo _ZN5boost6detail13once_epoch_cvE|c++filt
boost::detail::once_epoch_cv                                                   

мы можем увидеть, что в вашей библиотеке ускорения отсутствует символ boost :: detail :: once_epoch_cv . Такие загадочные пропущенные символы в большинстве случаев происходят из имен пространств имен / классов c ++, и их можно легко перевести с помощью инструмента c ++ filter (часть пакета gcc / g ++).

Таким образом, у вас нет метода once_epoch_cv в пространстве имен detail вашей библиотеки ускорения. Погуглив, мы можем найти здесь, что по крайней мере boost-1.47 содержал этот символ. Ваш вывод ldd говорит, что вы используете более новую версию boost (1.49).

Я думаю, существует такая несовместимость между вашим фактическим установленным boost и между, для которого был скомпилирован ваш исполняемый файл mongodb. Мое предложение состояло в том, чтобы перекомпилировать этот mongodb из исходного кода или устранить причину этой несовместимости (возможно, использование некоторых неофициальных / несовместимых репозиториев).

3
ответ дан 3 December 2019 в 01:50

Теги

Похожие вопросы