Hi all,
i has trouble with gscam package build on debian/wheezy. I know that
debian is not officially supported platform, but i don't want to
install ubuntu for various reasons now, as well as do some
chroot/virtual_machine installs, so have to fight with build failures
:(.
Here is build output:
===================================================================
0)ros/brown_perception% rosmake gscam
[ rosmake ] Packages requested are: ['gscam']
[ rosmake ] Logging to
directory/home/kp/.ros/rosmake/rosmake_output-20110527-225057
[ rosmake ] Expanded args ['gscam'] to:
['gscam']
[ rosmake ] Checking rosdeps compliance for packages gscam. This may
take a few seconds.
Failed to find rosdep libgstreamer-plugins-base0.10-dev for package
gscam on OS:debian version:wheezy
Failed to find rosdep libgstreamer0.10-dev for package gscam on
OS:debian version:wheezy
Failed to find rosdep boost for package gscam on OS:debian version:wheezy
Failed to find rosdep log4cxx for package gscam on OS:debian version:wheezy
WARNING: Rosdeps [u'libgstreamer-plugins-base0.10-dev',
u'libgstreamer0.10-dev', u'boost', u'log4cxx'] could not be resolved
[ rosmake ] rosdep check passed all system dependencies in packages
==skip==
[ rosmake ] Last 40 linescam: 37.2 sec ] [ 1 Active 32/33 Complete ]
{-------------------------------------------------------------------------------
mkdir -p bin
cd build && cmake -Wdev -DCMAKE_TOOLCHAIN_FILE=`rospack find
rosbuild`/rostoolchain.cmake ..
[rosbuild] Building package gscam
[rosbuild] Cached build flags older than manifests; calling rospack
to get flags
[rosbuild] Including /home/kp/ros/ros_comm/clients/rospy/cmake/rospy.cmake
[rosbuild] Including /home/kp/ros/ros_comm/clients/roslisp/cmake/roslisp.cmake
[rosbuild] Including
/home/kp/ros/ros_comm/clients/cpp/roscpp/cmake/roscpp.cmake
-- Configuring done
-- Generating done
CMake Warning: The variable, 'CMAKE_TOOLCHAIN_FILE', specified
manually, was not used during the generation.
-- Build files have been written to: /home/kp/ros/brown_perception/gscam/build
cd build && make -l4
make[1]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
make[2]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
make[3]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
Scanning dependencies of target rospack_genmsg_libexe
make[3]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
[ 0%] Built target rospack_genmsg_libexe
make[3]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
Scanning dependencies of target rosbuild_precompile
make[3]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
[ 0%] Built target rosbuild_precompile
make[3]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
Scanning dependencies of target gscam
make[3]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
make[3]: Entering directory `/home/kp/ros/brown_perception/gscam/build'
[100%] Building CXX object CMakeFiles/gscam.dir/src/gscam.o
/home/kp/ros/brown_perception/gscam/src/gscam.cpp:22:17: warning:
‘gboolean processData(GstPad*, GstBuffer*, void*)’ declared ‘static’
but never defined
Linking CXX executable ../bin/gscam
/usr/bin/ld: CMakeFiles/gscam.dir/src/gscam.o: undefined reference
to symbol 'gst_base_sink_get_type'
/usr/bin/ld: note: 'gst_base_sink_get_type' is defined in DSO
//usr/lib/libgstbase-0.10.so.0 so try adding it to the linker command
line
//usr/lib/libgstbase-0.10.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[3]: *** [../bin/gscam] Error 1
make[3]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
make[2]: *** [CMakeFiles/gscam.dir/all] Error 2
make[2]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/kp/ros/brown_perception/gscam/build'
-------------------------------------------------------------------------------}
[ rosmake ] Output from build of package gscam written to:
[ rosmake ] /home/kp/.ros/rosmake/rosmake_output-20110527-225057/gscam/build_output.log
[rosmake-2] Finished <<< gscam [FAIL] [ 37.17 seconds ]
[ rosmake ] Halting due to failure in package gscam.
[ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:
[ rosmake ] Built 33 packages with 1 failures.
[ rosmake ] Summary output to directory
[ rosmake ] /home/kp/.ros/rosmake/rosmake_output-20110527-225057
===================================================================
So, when i do as proposed by smart linker:
.~/ros/brown_perception/gscam/CMakeLists.txt
====
target_link_libraries(gscam gstreamer-0.10 gobject-2.0 gmodule-2.0
gthread-2.0 rt xml2 glib-2.0 gstapp-0.10 pthread gstbase-0.10)
====
package build go fine. But earlier, i saw here in maillist that this
not good way. So what else i can do to fix build failures in that
case.
As i understand gstreamer-0.10 must cover gstbase-0.10 flags too, why
it does not, i have no clue.
Thanks for tips.
P.S. I think it will be very good to add this info:
rosrun image_view image_view image:=/gscam/image_raw
from:
http://robotics.ccny.cuny.edu/wiki/Pioneer%203
to wiki of the brown_perception package:
http://www.ros.org/wiki/gscam
Of course, new users must read introductory tutorials on ROS (and
topics as a part), but anyway if you start streaming from cam for
first time then you usually want to watch stream to ensure proper
workflow.