Cross-compiling ROS for NAO atom robot
Hi,
I have followed the tutorial: ros.org/wiki/nao/Tutorials/Cross-Compiling_NAO-V4 (could not post as link due to low karma) in order to install ROS on a NAO robot.
My configuration: Ubuntu 10.04 32-bit, NAO atom robot, Aldebaran cross-toolchain: linux32-nao-atom-cross-toolchain-1.14
I did not notice any errors during the tutorial (but I might have missed error messages!), so I transferred the installation to a NAO robot as in step 1.8. However, when running
roscore
in a SSH session to the robot, roscore immediately shut down after startup because it could not locate the boost library. It was looking for boost version 1.40, but the files I transferred to the NAO contained boost version 1.48.
Trying to solve my problem I went back to the tutorial and realised I had missed to change
export ROS_BOOST_VERSION="1.45.0"
to
export ROS_BOOST_VERSION="1.48"
as 1.48 is the boost shipped with the cross-toolchain tools from Aldebaran.
However, now that I re-do step "1.4 Compiling ROS Base from source" in the tutorial, on
make -j8
I get a bunch of these errors:
[ 98%] Building CXX object ros_comm/tools/rosbag/CMakeFiles/rosbag.dir/src/buffer.cpp.o
../../../lib/librostime.so: undefined reference to `boost::thread_resource_error::thread_resource_error()'
../../../lib/libroscpp.so: undefined reference to `boost::filesystem::detail::get_current_path_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
../../../lib/librostime.so: undefined reference to `boost::lock_error::lock_error()'
../../../lib/libroscpp.so: undefined reference to `boost::system::get_system_category()'
/home/nao/linux32-nao-atom-cross-toolchain-1.14/sysroot/usr/lib/libboost_regex-mt-1_48.so: undefined reference to `std::_List_node_base::_M_transfer(std::_List_node_base*, std::_List_node_base*)@GLIBCXX_3.4.14'
../../../lib/libroscpp.so: undefined reference to `boost::filesystem::detail::create_directory_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
../../../lib/libroscpp.so: undefined reference to `boost::system::get_generic_category()'
/home/nao/linux32-nao-atom-cross-toolchain-1.14/sysroot/usr/lib/libboost_regex-mt-1_48.so: undefined reference to `std::_List_node_base::_M_unhook()@GLIBCXX_3.4.14'
/home/nao/linux32-nao-atom-cross-toolchain-1.14/sysroot/usr/lib/libboost_signals-mt-1_48.so: undefined reference to `std::_List_node_base::_M_reverse()@GLIBCXX_3.4.14'
/home/nao/linux32-nao-atom-cross-toolchain-1.14/sysroot/usr/lib/libboost_regex-mt-1_48.so: undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)@GLIBCXX_3.4.14'
collect2: ld returned 1 exit status
make[2]: *** [ros_comm/tools/rosout/bin/rosout] Error 1
make[1]: *** [ros_comm/tools/rosout/CMakeFiles/rosout.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Which tells me there's something wrong with boost. Also, in the step before:
cmake .. -DCMAKE_INSTALL_PREFIX=$ROS_FUERTE_DIR
I get these kinds of warnings which might be related:
CMake Warning at ros_comm/test/test_roscpp/src/CMakeLists.txt:150 (add_executable):
Cannot generate a safe runtime search path for target
test_roscpp-nonconst_subscriptions because files in some directories may
conflict with libraries in implicit directories:
runtime library [libgtest.so.0] in /usr/lib may be hidden by files in:
/home/nao/linux32-nao-atom-cross-toolchain-1.14/sysroot/usr/lib
Some of these libraries may not be found correctly.
There are a lot of these warnings for many different libraries.
I'm a bit lost in all these errors and hope someone can give ...