Robotics StackExchange | Archived questions

Linking CXX executable ERROR

I installed libuvccamera and it didn't compile, then I erased. When compiling again it didn't work, so I removed with $sudo apt-get purgue --auto-remove libuvc and now when I have usbcam and audio_common packages into my src it doesn't compile. If they are not in src it compiles properly.

I get a similar error with usbcam and audiocommon packages:

odroid@odroid:~/catkin_ws$ catkin_make -j1
Base path: /home/odroid/catkin_ws
Source space: /home/odroid/catkin_ws/src
Build space: /home/odroid/catkin_ws/build
Devel space: /home/odroid/catkin_ws/devel
Install space: /home/odroid/catkin_ws/install
####
#### Running command: "cmake /home/odroid/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/odroid/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/odroid/catkin_ws/install -G Unix Makefiles" in "/home/odroid/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/odroid/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/odroid/catkin_ws/devel;/home/odroid/ros_catkin_ws/install_isolated
-- This workspace overlays: /home/odroid/catkin_ws/devel;/home/odroid/ros_catkin_ws/install_isolated
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2") 
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/odroid/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.17") 
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.19
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 13 packages in topological order:
-- ~~  - audio_common (metapackage)
-- ~~  - audio_common_msgs
-- ~~  - opencv_tests
-- ~~  - vision_opencv (metapackage)
-- ~~  - audio_capture
-- ~~  - audio_play
-- ~~  - ros_aiml
-- ~~  - speech_recognition
-- ~~  - cv_bridge
-- ~~  - emotion_recognition
-- ~~  - face_recognition
-- ~~  - image_geometry
-- ~~  - sound_play
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin metapackage: 'audio_common'
-- ==> add_subdirectory(audio_common/audio_common)
-- +++ processing catkin package: 'audio_common_msgs'
-- ==> add_subdirectory(audio_common/audio_common_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- audio_common_msgs: 1 messages, 0 services
-- +++ processing catkin package: 'opencv_tests'
-- ==> add_subdirectory(vision_opencv/opencv_tests)
-- +++ processing catkin metapackage: 'vision_opencv'
-- ==> add_subdirectory(vision_opencv/vision_opencv)
-- +++ processing catkin package: 'audio_capture'
-- ==> add_subdirectory(audio_common/audio_capture)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   thread
--   chrono
--   system
--   date_time
--   atomic
-- +++ processing catkin package: 'audio_play'
-- ==> add_subdirectory(audio_common/audio_play)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   thread
--   chrono
--   system
--   date_time
--   atomic
-- +++ processing catkin package: 'ros_aiml'
-- ==> add_subdirectory(ros_robotics_projects/ros_aiml)
-- +++ processing catkin package: 'speech_recognition'
-- ==> add_subdirectory(speech_recognition/speech_recognition)
-- +++ processing catkin package: 'cv_bridge'
-- ==> add_subdirectory(vision_opencv/cv_bridge)
-- Found PythonLibs: /usr/lib/arm-linux-gnueabihf/libpython2.7.so (found version "2.7.17") 
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   python
-- Found OpenCV: /usr (found suitable version "3.2.0", minimum required is "3") found components:  opencv_core opencv_imgproc opencv_imgcodecs 
-- Found PythonLibs: /usr/lib/arm-linux-gnueabihf/libpython2.7.so (found suitable version "2.7.17", minimum required is "2.7") 
-- +++ processing catkin package: 'emotion_recognition'
-- ==> add_subdirectory(emotion_recognition)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- emotion_recognition: 1 messages, 0 services
-- +++ processing catkin package: 'face_recognition'
-- ==> add_subdirectory(face_recognition)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- face_recognition: 1 messages, 0 services
-- +++ processing catkin package: 'image_geometry'
-- ==> add_subdirectory(vision_opencv/image_geometry)
-- Found OpenCV: /usr (found version "3.2.0") 
-- +++ processing catkin package: 'sound_play'
-- ==> add_subdirectory(audio_common/sound_play)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Generating .msg files for action sound_play/SoundRequest /home/odroid/catkin_ws/src/audio_common/sound_play/action/SoundRequest.action
-- sound_play: 8 messages, 0 services
-- Configuring done
-- Generating done
-- Build files have been written to: /home/odroid/catkin_ws/build
####
#### Running command: "make -j1" in "/home/odroid/catkin_ws/build"
####
[  0%] Built target _audio_common_msgs_generate_messages_check_deps_AudioData
[  1%] Built target audio_common_msgs_generate_messages_nodejs
[  2%] Built target audio_common_msgs_generate_messages_cpp
[  3%] Built target audio_common_msgs_generate_messages_lisp
[  6%] Built target audio_common_msgs_generate_messages_py
[  8%] Built target audio_common_msgs_generate_messages_eus
[  8%] Built target audio_common_msgs_generate_messages
[  8%] Built target std_msgs_generate_messages_lisp
[  8%] Built target std_msgs_generate_messages_py
[  8%] Built target std_msgs_generate_messages_nodejs
[  8%] Built target roscpp_generate_messages_cpp
[  8%] Built target roscpp_generate_messages_eus
[  8%] Built target roscpp_generate_messages_nodejs
[  8%] Built target roscpp_generate_messages_py
[  8%] Built target rosgraph_msgs_generate_messages_cpp
[  8%] Built target std_msgs_generate_messages_eus
[  8%] Built target roscpp_generate_messages_lisp
[  8%] Built target rosgraph_msgs_generate_messages_eus
[  8%] Built target rosgraph_msgs_generate_messages_py
[  8%] Built target rosgraph_msgs_generate_messages_nodejs
[  8%] Built target rosgraph_msgs_generate_messages_lisp
[  8%] Built target std_msgs_generate_messages_cpp
[ 10%] Linking CXX executable /home/odroid/catkin_ws/devel/lib/audio_capture/audio_capture
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `main':
audio_capture.cpp:(.text+0x64): undefined reference to `ros::init(int&, char**, std::string const&, unsigned int)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `audio_transport::RosGstCapture::RosGstCapture()':
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0x30): undefined reference to `ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0x6bc): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0x77e): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0x83a): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0x8fc): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0xb36): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0xbf8): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0xc76): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCaptureC2Ev[_ZN15audio_transport13RosGstCaptureC5Ev]+0xd38): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `audio_transport::RosGstCapture::onMessage(_GstBus*, _GstMessage*, void*)':
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCapture9onMessageEP7_GstBusP11_GstMessagePv[_ZN15audio_transport13RosGstCapture9onMessageEP7_GstBusP11_GstMessagePv]+0x80): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZN15audio_transport13RosGstCapture9onMessageEP7_GstBusP11_GstMessagePv[_ZN15audio_transport13RosGstCapture9onMessageEP7_GstBusP11_GstMessagePv]+0x148): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `bool ros::param::param<std::string>(std::string const&, std::string&, std::string const&)':
audio_capture.cpp:(.text._ZN3ros5param5paramISsEEbRKSsRT_RKS4_[_ZN3ros5param5paramISsEEbRKSsRT_RKS4_]+0xe): undefined reference to `ros::param::has(std::string const&)'
audio_capture.cpp:(.text._ZN3ros5param5paramISsEEbRKSsRT_RKS4_[_ZN3ros5param5paramISsEEbRKSsRT_RKS4_]+0x1c): undefined reference to `ros::param::get(std::string const&, std::string&)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `bool ros::param::param<int>(std::string const&, int&, int const&)':
audio_capture.cpp:(.text._ZN3ros5param5paramIiEEbRKSsRT_RKS4_[_ZN3ros5param5paramIiEEbRKSsRT_RKS4_]+0xe): undefined reference to `ros::param::has(std::string const&)'
audio_capture.cpp:(.text._ZN3ros5param5paramIiEEbRKSsRT_RKS4_[_ZN3ros5param5paramIiEEbRKSsRT_RKS4_]+0x1c): undefined reference to `ros::param::get(std::string const&, int&)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o: In function `void ros::Publisher::publish<audio_common_msgs::AudioData_<std::allocator<void> > >(audio_common_msgs::AudioData_<std::allocator<void> > const&) const':
audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x86): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x192): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x286): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x39c): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x4a8): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)'
CMakeFiles/audio_capture.dir/src/audio_capture.cpp.o:audio_capture.cpp:(.text._ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN17audio_common_msgs10AudioData_ISaIvEEEEEvRKT_]+0x5b4): more undefined references to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)' follow
collect2: error: ld returned 1 exit status
audio_common/audio_capture/CMakeFiles/audio_capture.dir/build.make:120: recipe for target '/home/odroid/catkin_ws/devel/lib/audio_capture/audio_capture' failed
make[2]: *** [/home/odroid/catkin_ws/devel/lib/audio_capture/audio_capture] Error 1
CMakeFiles/Makefile2:975: recipe for target 'audio_common/audio_capture/CMakeFiles/audio_capture.dir/all' failed
make[1]: *** [audio_common/audio_capture/CMakeFiles/audio_capture.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j1" failed

What can I do to solve it?

Edit to answer:

The audiocapture/CMakeLists.txt is exactly the one that comes when I do $git clone https://github.com/ros-drivers/audiocommon.git

cmakeminimumrequired(VERSION 2.8.3) project(audiocapture) findpackage(catkin REQUIRED COMPONENTS roscpp audiocommonmsgs) findpackage(PkgConfig) pkgcheckmodules(GST1.0 gstreamer-1.0 REQUIRED) findpackage(Boost REQUIRED COMPONENTS thread) includedirectories(${catkinINCLUDEDIRS} ${BoostINCLUDEDIRS} ${GST1.0INCLUDEDIRS}) catkinpackage() addexecutable(audiocapture src/audiocapture.cpp) targetlinklibraries(audiocapture ${catkinLIBRARIES} ${GST1.0LIBRARIES} ${BoostLIBRARIES}) adddependencies(audiocapture ${catkinEXPORTEDTARGETS}) install(TARGETS audiocapture DESTINATION ${CATKINPACKAGEBINDESTINATION}) install(DIRECTORY launch DESTINATION ${CATKINPACKAGESHAREDESTINATION})

I have also tried to do what they propose here: https://answers.ros.org/question/220579/undefined-reference-to-rosinitint-char-stdstring-const-unsigned-int/?answer=220602#post-id-220602

But it doesn't work.

Asked by noelia-dica on 2020-06-11 01:58:56 UTC

Comments

Can you post your audio_capture/CMakeLists.txt please? You might be missing a roscpp somewhere.

Asked by KenYN on 2020-06-11 06:21:40 UTC

@KenYN

posted:

cmake_minimum_required(VERSION 2.8.3)

project(audio_capture)

find_package(catkin REQUIRED COMPONENTS roscpp audio_common_msgs)

find_package(PkgConfig) pkg_check_modules(GST1.0 gstreamer-1.0 REQUIRED)

find_package(Boost REQUIRED COMPONENTS thread)

include_directories(${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${GST1.0_INCLUDE_DIRS})

catkin_package()

add_executable(audio_capture src/audio_capture.cpp) target_link_libraries(audio_capture ${catkin_LIBRARIES} ${GST1.0_LIBRARIES} ${Boost_LIBRARIES}) add_dependencies(audio_capture ${catkin_EXPORTED_TARGETS})

install(TARGETS audio_capture DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})

Asked by noelia-dica on 2020-06-11 06:57:11 UTC

Answers