MRPT / mrpt

:zap: The Mobile Robot Programming Toolkit (MRPT)
https://docs.mrpt.org/reference/latest/
BSD 3-Clause "New" or "Revised" License
1.93k stars 630 forks source link

mrpt_bfd_error_handler_type in linux 16.04 #1123

Closed songming1995 closed 3 years ago

songming1995 commented 3 years ago

Hi, I tried to install mrpt 2.1.8 in linux 16.04. I came across the problem when I use the console to make install. cd mrpt mkdir build cd build cmake .. cmake --build .

/home/songming/mrpt/libs/core/src/backtrace.cpp: In function ‘std::vector<mrpt::TCallStackEntry> backtraceSymbols(void* const*, int)’: /home/songming/mrpt/libs/core/src/backtrace.cpp:271:24: error: invalid conversion from ‘void (*)(const char*, __va_list_tag*)’ to ‘bfd_error_handler_type {aka void (*)(const char*, ...)}’ [-fpermissive] bfd_set_error_handler(&mrpt_bfd_error_handler_type); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/songming/mrpt/libs/core/src/backtrace.cpp:44:0: /usr/include/bfd.h:6856:24: note: initializing argument 1 of ‘void (* bfd_set_error_handler(bfd_error_handler_type))(const char*, ...)’ bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); ^~~~~~~~~~~~~~~~~~~~~ libs/core/CMakeFiles/core.dir/build.make:134: recipe for target 'libs/core/CMakeFiles/core.dir/src/backtrace.cpp.o' failed make[2]: *** [libs/core/CMakeFiles/core.dir/src/backtrace.cpp.o] Error 1 CMakeFiles/Makefile2:2108: recipe for target 'libs/core/CMakeFiles/core.dir/all' failed make[1]: *** [libs/core/CMakeFiles/core.dir/all] Error 2 Makefile:160: recipe for target 'all' failed make: *** [all] Error 2

songming1995 commented 3 years ago

Initially, IBERTY_LIBRARY was not found. So I installed it via sudo apt-get install libiberty-dev. I am not sure it will cause the compiling error.

I have g++ (Ubuntu 7.5.0-3ubuntu1-16.04) 7.5.0 and gcc (Ubuntu 7.5.0-3ubuntu1-16.04) 7.5.0. GNU ld (GNU Binutils for Ubuntu) 2.26.1. mrpt uses private binutils shared libraries: Package: libmrpt-core2.1 Depends: libbinutils (>= 2.35.1), libbinutils (<< 2.35.2), [...] @jlblancoc

jlblancoc commented 3 years ago

Yes, libiberty-dev is a new optional dependency to enable the feature of fully demangled stack traces with source code file names and line numbers.

Please, reopen if this is still an issue.

ketchart commented 3 years ago

https://ibb.co/wgzLtGY

I tried sudo apt-get install libiberty-dev, it did not work Please guide me

jlblancoc commented 3 years ago

Hi @ketchart ! Fixes for u16.04 are not supported anymore, but if that's your unique problem, just set DISABLE_BFD=OFF in CMake (using cmake-gui or ccmake) and you should get rid of the problem. Best,

ketchart commented 3 years ago

https://ibb.co/Sdw9cw1

I did like that (then I click OK -> Configure -> Generate). Error appeared again when I did "make -j8", I believe I did it wrong Please recorrect me

jlblancoc commented 3 years ago

Ah! I forgot to mention that the existing cmake option is "advanced", so it's hidden by default: first select "show advanced" in cmake-gui, then check that variable, configure, generate, and build...

ketchart commented 2 years ago

https://ibb.co/txw17SX

"mrpt_bfd_error_handler_type" error is solved. But, a new error appeared during "cmake --build ."

https://ibb.co/sm3WLrF

Actually, I should Post it as a new Issue. Please advise me for the further step.

jlblancoc commented 2 years ago

@ketchart Yes, please, open a new issue ticket, and attach the text file CMAKE_CONFIG.txt with the result of:

cd mrpt
mkdir build && cd build
VERBOSE=1 cmake ..  | tee CMAKE_CONFIG.txt