7

Iam having trouble with my mongodb install : when I run sudo mongod, I get 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)

I have reinstalled libboost and mongodb, but without success. any idea what's going on ?

BR/

3agelx45
  • 93
  • 5
  • `mongod --version` should return a version number and git hash. If you installed a packaged version I think you shouldn't have to worry about libboost versions because should be part of the package deps. For supported Debian package see: [Install MongoDB on Debian](http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/). – Stennie Apr 02 '15 at 22:04
  • ok thx. will check and let you know. – 3agelx45 Apr 02 '15 at 22:11

1 Answers1

5

First, with a command

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

we can see, that your boost library is missing the boost::detail::once_epoch_cv symbol. Such cryptic missing symbols are coming in most cases from c++ namespace / class names, and they could be translated easily with the c++filt tool (part of the gcc / g++ package).

Thus, you don't have the once_epoch_cv method in the detail namespace of your boost library. Googling for that we can found here, that at least boost-1.47 contained this symbol. Your ldd output says you are using a newer boost version (1.49).

I think, there is this type of incompatibility between your actual installed boost and between for which your mongodb executable was compiled for. My suggestion were to recompile that mongodb from source, or eliminate the cause of this incompatibility (probably the usage of some inofficial / incompatible repos).

peterh
  • 4,914
  • 13
  • 29
  • 44