Iam遇到我的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 /
首先,用一个命令
$ echo _ZN5boost6detail13once_epoch_cvE|c++filt boost::detail::once_epoch_cv
我们可以看到,你的boost库缺lessboost::detail::once_epoch_cv符号。 这种隐藏的缺失符号大多来自c ++命名空间/类名,而且可以使用c++filt工具(gcc / g ++包的一部分)轻松转换。
因此,在boost库的detail命名空间中没有once_epoch_cv方法。 我们可以在这里find谷歌search,至less提升1.47包含这个标志。 您的ldd输出表示您正在使用更新的升级版本(1.49)。
我认为,你的实际安装的提升与你的mongodb可执行文件编译之间存在这种不兼容性。 我的build议是从源头重新编译这个mongodb,或者消除这个不兼容的原因(可能是使用了一些官方的/不兼容的回购)。