syleemrl/ParameterizedMotion

Issues with build on Ubuntu 20.04

Opened this issue · 6 comments

Keep getting an error when trying to build this. It seems to be caused by Boost?

[ 63%] Linking CXX executable render /usr/bin/ld: CMakeFiles/render.dir/MotionWidget.cpp.o: in function MotionWidget::runPPO()':
MotionWidget.cpp:(.text+0x2cfe): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)' /usr/bin/ld: MotionWidget.cpp:(.text+0x2d78): undefined reference to boost::python::numpy::from_object(boost::python::api::object const&, int, int, boost::python::numpy::ndarray::bitflag)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x32c1): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: CMakeFiles/render.dir/MotionWidget.cpp.o: in function MotionWidget::initNetworkSetting(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool)':
MotionWidget.cpp:(.text+0x3408): undefined reference to boost::python::numpy::initialize(bool)' /usr/bin/ld: MotionWidget.cpp:(.text+0x3417): undefined reference to boost::python::detail::str_base::str_base(char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x3426): undefined reference to boost::python::import(boost::python::str)' /usr/bin/ld: MotionWidget.cpp:(.text+0x3539): undefined reference to boost::python::detail::str_base::str_base(char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x35a0): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)' /usr/bin/ld: MotionWidget.cpp:(.text+0x35e4): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x370f): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: MotionWidget.cpp:(.text+0x3adb): undefined reference to boost::python::detail::str_base::str_base(char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x3aea): undefined reference to boost::python::import(boost::python::str)' /usr/bin/ld: MotionWidget.cpp:(.text+0x3b28): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x3df0): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)' /usr/bin/ld: MotionWidget.cpp:(.text+0x454d): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x4619): undefined reference to boost::python::numpy::from_object(boost::python::api::object const&, int, int, boost::python::numpy::ndarray::bitflag)' /usr/bin/ld: MotionWidget.cpp:(.text+0x4e06): undefined reference to boost::python::detail::str_base::str_base(char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x4e15): undefined reference to boost::python::import(boost::python::str)' /usr/bin/ld: MotionWidget.cpp:(.text+0x4e53): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x4f18): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)' /usr/bin/ld: MotionWidget.cpp:(.text+0x5121): undefined reference to boost::python::throw_error_already_set()'
/usr/bin/ld: MotionWidget.cpp:(.text+0x5351): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: MotionWidget.cpp:(.text+0x5361): undefined reference to boost::python::throw_error_already_set()'
/usr/bin/ld: MotionWidget.cpp:(.text+0x5371): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: MotionWidget.cpp:(.text+0x5381): undefined reference to boost::python::throw_error_already_set()'
/usr/bin/ld: CMakeFiles/render.dir/MotionWidget.cpp.o:MotionWidget.cpp:(.text+0x5391): more undefined references to boost::python::throw_error_already_set()' follow /usr/bin/ld: CMakeFiles/render.dir/MotionWidget.cpp.o: in function MotionWidget::setParamFromNetwork()':
MotionWidget.cpp:(.text+0x6313): undefined reference to boost::python::api::getattr(boost::python::api::object const&, char const*)' /usr/bin/ld: MotionWidget.cpp:(.text+0x63d3): undefined reference to boost::python::numpy::from_object(boost::python::api::object const&, int, int, boost::python::numpy::ndarray::bitflag)'
/usr/bin/ld: MotionWidget.cpp:(.text+0x6ae1): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: CMakeFiles/render.dir/MotionWidget.cpp.o:(.data.rel.local.DW.ref._ZTIN5boost6python17error_already_setE[DW.ref._ZTIN5boost6python17error_already_setE]+0x0): undefined reference to typeinfo for boost::python::error_already_set'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::typed_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>::xparse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const': main.cpp:(.text._ZNK5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE6xparseERNS_3anyERKSt6vectorIS7_SaIS7_EE[_ZNK5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE6xparseERNS_3anyERKSt6vectorIS7_SaIS7_EE]+0x1d): undefined reference to boost::program_options::validate(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, int)'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::typed_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>::name() const': main.cpp:(.text._ZNK5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE4nameEv[_ZNK5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE4nameEv]+0x3e): undefined reference to boost::program_options::arg[abi:cxx11]'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>)': main.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE[_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE]+0x50): undefined reference to boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&>)'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::program_options::to_internal<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)': main.cpp:(.text._ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE[_ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE]+0xa4): undefined reference to boost::program_options::to_internal(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)': main.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x193): undefined reference to boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::basic_command_line_parser<char>::run()': main.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x34): undefined reference to boost::program_options::detail::cmdline::get_canonical_option_prefix()'
/usr/bin/ld: main.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x69): undefined reference to boost::program_options::detail::cmdline::run()' /usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::basic_parsed_options boost::program_options::parse_command_line(int, char const
const*, boost::program_options::options_description const&, int, boost::function1<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&>)':
main.cpp:(.text._ZN5boost15program_options18parse_command_lineIcEENS0_20basic_parsed_optionsIT_EEiPKPKS3_RKNS0_19options_descriptionEiNS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESJ_ERKSJ_EE[_ZN5boost15program_options18parse_command_lineIcEENS0_20basic_parsed_optionsIT_EEiPKPKS3_RKNS0_19options_descriptionEiNS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESJ_ERKSJ_EE]+0x46): undefined reference to boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)' /usr/bin/ld: main.cpp:(.text._ZN5boost15program_options18parse_command_lineIcEENS0_20basic_parsed_optionsIT_EEiPKPKS3_RKNS0_19options_descriptionEiNS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESJ_ERKSJ_EE[_ZN5boost15program_options18parse_command_lineIcEENS0_20basic_parsed_optionsIT_EEiPKPKS3_RKNS0_19options_descriptionEiNS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESJ_ERKSJ_EE]+0x59): undefined reference to boost::program_options::detail::cmdline::style(int)'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::variables_map::~variables_map()': main.cpp:(.text._ZN5boost15program_options13variables_mapD0Ev[_ZN5boost15program_options13variables_mapD5Ev]+0x14): undefined reference to vtable for boost::program_options::variables_map'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function boost::program_options::variables_map::~variables_map()': main.cpp:(.text._ZN5boost15program_options13variables_mapD2Ev[_ZN5boost15program_options13variables_mapD5Ev]+0x14): undefined reference to vtable for boost::program_options::variables_map'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o: in function main': main.cpp:(.text.startup+0xae): undefined reference to boost::program_options::options_description::m_default_line_length'
/usr/bin/ld: main.cpp:(.text.startup+0xc9): undefined reference to boost::program_options::options_description::options_description(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)' /usr/bin/ld: main.cpp:(.text.startup+0xef): undefined reference to boost::program_options::options_description::add_options()'
/usr/bin/ld: main.cpp:(.text.startup+0x112): undefined reference to boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*)' /usr/bin/ld: main.cpp:(.text.startup+0x12e): undefined reference to boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*)'
/usr/bin/ld: main.cpp:(.text.startup+0x140): undefined reference to boost::program_options::options_description_easy_init::operator()(char const*, char const*)' /usr/bin/ld: main.cpp:(.text.startup+0x148): undefined reference to boost::program_options::variables_map::variables_map()'
/usr/bin/ld: main.cpp:(.text.startup+0x180): undefined reference to boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)' /usr/bin/ld: main.cpp:(.text.startup+0x249): undefined reference to boost::program_options::abstract_variables_map::operator[](std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const'
/usr/bin/ld: main.cpp:(.text.startup+0x2d7): undefined reference to boost::program_options::abstract_variables_map::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /usr/bin/ld: CMakeFiles/render.dir/main.cpp.o:(.data.rel.ro._ZTIN5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEE[_ZTIN5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEE]+0x18): undefined reference to typeinfo for boost::program_options::value_semantic_codecvt_helper'
/usr/bin/ld: CMakeFiles/render.dir/main.cpp.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEE[_ZTVN5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEE]+0x38): undefined reference to boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const' /usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function SIM::toNumPyArray(std::vector<double, std::allocator >)':
Functions.cpp:(.text+0x1807): undefined reference to boost::python::numpy::dtype boost::python::numpy::detail::get_float_dtype<32>()' /usr/bin/ld: Functions.cpp:(.text+0x1815): undefined reference to boost::python::numpy::empty(boost::python::tuple const&, boost::python::numpy::dtype const&)'
/usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function SIM::toNumPyArray(Eigen::Matrix<double, -1, 1, 0, -1, 1>)': Functions.cpp:(.text+0x19e0): undefined reference to boost::python::numpy::dtype boost::python::numpy::detail::get_float_dtype<32>()'
/usr/bin/ld: Functions.cpp:(.text+0x19ee): undefined reference to boost::python::numpy::empty(boost::python::tuple const&, boost::python::numpy::dtype const&)' /usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function SIM::toNumPyArray(std::vector<std::vector<double, std::allocator >, std::allocator<std::vector<double, std::allocator > > >)':
Functions.cpp:(.text+0x1be3): undefined reference to boost::python::numpy::dtype boost::python::numpy::detail::get_float_dtype<32>()' /usr/bin/ld: Functions.cpp:(.text+0x1bf1): undefined reference to boost::python::numpy::empty(boost::python::tuple const&, boost::python::numpy::dtype const&)'
/usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function SIM::toNumPyArray(std::vector<Eigen::Matrix<double, -1, 1, 0, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1, 0, -1, 1> > >)': Functions.cpp:(.text+0x1e30): undefined reference to boost::python::numpy::dtype boost::python::numpy::detail::get_float_dtype<32>()'
/usr/bin/ld: Functions.cpp:(.text+0x1e43): undefined reference to boost::python::numpy::empty(boost::python::tuple const&, boost::python::numpy::dtype const&)' /usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function SIM::toNumPyArray(Eigen::Matrix<double, -1, -1, 0, -1, -1>)':
Functions.cpp:(.text+0x206f): undefined reference to boost::python::numpy::dtype boost::python::numpy::detail::get_float_dtype<32>()' /usr/bin/ld: Functions.cpp:(.text+0x207d): undefined reference to boost::python::numpy::empty(boost::python::tuple const&, boost::python::numpy::dtype const&)'
/usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function boost::python::tuple boost::python::make_tuple<int>(int const&)': Functions.cpp:(.text._ZN5boost6python10make_tupleIiEENS0_5tupleERKT_[_ZN5boost6python10make_tupleIiEENS0_5tupleERKT_]+0x81): undefined reference to boost::python::throw_error_already_set()'
/usr/bin/ld: Functions.cpp:(.text.ZN5boost6python10make_tupleIiEENS0_5tupleERKT[ZN5boost6python10make_tupleIiEENS0_5tupleERKT]+0x91): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: ../../sim/libsim.a(Functions.cpp.o): in function boost::python::tuple boost::python::make_tuple<int, int>(int const&, int const&)':
Functions.cpp:(.text.ZN5boost6python10make_tupleIiiEENS0_5tupleERKT_RKT0[ZN5boost6python10make_tupleIiiEENS0_5tupleERKT_RKT0]+0x101): undefined reference to boost::python::throw_error_already_set()' /usr/bin/ld: Functions.cpp:(.text._ZN5boost6python10make_tupleIiiEENS0_5tupleERKT_RKT0_[_ZN5boost6python10make_tupleIiiEENS0_5tupleERKT_RKT0_]+0x111): undefined reference to boost::python::throw_error_already_set()'
collect2: error: ld returned 1 exit status
make[2]: *** [render/CMakeFiles/render.dir/build.make:206: render/render] Error 1
make[1]: *** [CMakeFiles/Makefile2:192: render/CMakeFiles/render.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
`

I have the same error. Ubuntu 20.04 as well. Were you able to get past this?

I have the same error. Ubuntu 20.04 as well. Were you able to get past this?

Not yet, I'm going to try and fix today. I assume it has something to do with Python Boost library not being set up correctly for this.

I have the same error. Ubuntu 20.04 as well. Were you able to get past this?

I got mine to build.

The first thing I would do is make sure you have the Boost libraries on your system. In Ubuntu you can install python boost libraries with

sudo apt-get install -y libboost-python-dev

To the run_cmake.sh file, I put this flag in as described in this problem on stackexchange
https://stackoverflow.com/questions/9948375/cmake-find-package-succeeds-but-returns-wrong-path/12044891

cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$CENVDIR \ -DFCL_INCLUDE_DIRS=$CENVDIR/include/fcl \ -DFCL_LIBRARIES=$CENVDIR/lib/libfcl.so \ -DCCD_INCLUDE_DIRS=$CENVDIR/include/ccd \ -DCCD_LIBRARIES=$CENVDIR/lib/libccd.so \ -DBoost_NO_BOOST_CMAKE=ON \
So, just add DBoost_NO_BOOST_CMAKE=ON to the flags in the shell script.

If that still doesn't work, try adding this to the CMakeLists.txt file,

find_package(Boost 1.71.0 EXACT PATHS /usr/lib/x86_64-linux-gnu/ /usr/include COMPONENTS filesystem python38 numpy38 program_options)

Where the paths after PATHS are the directories containing your Boost header files and the compiled .so files (ie libboost_python) that seem to be causing the issues.

Also, comment out the

find_package(Boost 1.69 **. . .**) IF(NOT Boost_Found) ENDIF()

In my case, I guess CMake was linking to the incorrect directory.

Did you ever have any issues with Dart? I started from scratch in a Docker container, and now when I run ./run_cmake.sh and get the error

CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find DART (missing: gui collision-bullet)

I got past the Dart and Boost errors, but now am unable to build correctly. I added the DBoost_NO_BOOST_CMAKE=ON flag and replaced the boost line with find_package(Boost REQUIRED COMPONENTS filesystem python numpy program_options). The run_cmake.sh script now runs properly, but trying to run make -jN in the build directory does not work and errors out with

sim/CMakeFiles/sim.dir/build.make:86: recipe for target 'sim/CMakeFiles/sim.dir/Controller.cpp.o' failed
make[2]: *** [sim/CMakeFiles/sim.dir/Controller.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:85: recipe for target 'sim/CMakeFiles/sim.dir/all' failed
make[1]: *** [sim/CMakeFiles/sim.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Did you run into this at all?

I had issues with -jN flag, I believe I did -j4 or -j8. I don't recall what that flag was, I think it was the amount of workers compiling the code. I think N meant the maximum number of workers? Not totally sure, but I either got rid of that flag altogether or picked a random number appended to the j flag.