Closed maujim closed 4 years ago
@maujim just to make sure have you tried a clean ros build?
At the very least you should try rebuilding ros-melodic-class-loader
.
The build is working for me.
Can you post the output of:
sudo updatedb && locate libPocoFoundation.so
Note: you may need to: yay -Syu mlocate
Yeah I did, same issue
Is it possible for you to give proof of that, instead of just saying it? Like post the output of ‘ls’ in your yay build folder before running commands. We can’t help much at this stage, if we don’t see more concrete information.
My bad I didn't see the edit. Full ros rebuild led to the same error as above.
Output of sudo updatedb && locate libPocoFoundation.so
:
/usr/lib/libPocoFoundation.so
/usr/lib/libPocoFoundation.so.64
As for the yay build folder, that would be $HOME/.cache/yay/
right? If so, output of ls
in that folder is below
completion.cache
gazebo
ignition-common-1
ignition-fuel_tools-1
ignition-msgs-1
ignition-transport-4
ros-melodic-camera-calibration
ros-melodic-controller-manager
ros-melodic-control-toolbox
ros-melodic-desktop
ros-melodic-desktop-full
ros-melodic-diff-drive-controller
ros-melodic-forward-command-controller
ros-melodic-gazebo-dev
ros-melodic-gazebo-plugins
ros-melodic-gazebo-ros
ros-melodic-gazebo-ros-control
ros-melodic-gazebo-ros-pkgs
ros-melodic-geometry
ros-melodic-image-pipeline
ros-melodic-image-view
ros-melodic-joint-limits-interface
ros-melodic-joint-state-controller
ros-melodic-kdl-parser
ros-melodic-kdl-parser-py
ros-melodic-librviz-tutorial
ros-melodic-perception
ros-melodic-position-controllers
ros-melodic-realtime-tools
ros-melodic-robot
ros-melodic-robot-state-publisher
ros-melodic-rqt-robot-plugins
ros-melodic-rqt-rviz
ros-melodic-rviz
ros-melodic-rviz-plugin-tutorials
ros-melodic-rviz-python-tutorial
ros-melodic-simulators
ros-melodic-urdf
ros-melodic-urdf-sim-tutorial
ros-melodic-urdf-tutorial
ros-melodic-visualization-tutorials
ros-melodic-viz
siji-git
spotify
spotify-dev
spotify-tui
ttf-unifont
vcs.json
Thanks for the information! Okay so first off Make sure you have an upgraded system: ‘yay -Syu’ Can you post the output of ‘sudo updatedb && locate libPocoFoundation.so’ after upgrading.
System is fully updated except for ros-melodic-librviz-tutorial
which is version 0.10.3-2. When I try to upgrade it to 0.10.3-3, I get the same type of error as above (included below).
Output of sudo updatedb && locate libPocoFoundation.so
:
/usr/lib/libPocoFoundation.so
/usr/lib/libPocoFoundation.so.64
[ 40%] Building CXX object CMakeFiles/myviz.dir/myviz_autogen/mocs_compilation.cpp.o
[ 60%] Building CXX object CMakeFiles/myviz.dir/src/myviz.cpp.o
[ 80%] Building CXX object CMakeFiles/myviz.dir/src/main.cpp.o
[100%] Linking CXX executable devel/lib/librviz_tutorial/myviz
/usr/bin/ld: warning: libPocoFoundation.so.71, needed by /opt/ros/melodic/lib/libclass_loader.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `Poco::SharedLibrary::SharedLibrary(std::__cxx11::basic_string, std::allocator > const&)'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `typeinfo for Poco::LibraryLoadException'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `Poco::SharedLibrary::suffix[abi:cxx11]()'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `typeinfo for Poco::NotFoundException'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `typeinfo for Poco::LibraryAlreadyLoadedException'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `typeinfo for Poco::RuntimeException'
/usr/bin/ld: /opt/ros/melodic/lib/libclass_loader.so: undefined reference to `Poco::SharedLibrary::unload()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/myviz.dir/build.make:163: devel/lib/librviz_tutorial/myviz] Error 1
make[2]: Leaving directory '/home/mukund/.cache/yay/ros-melodic-librviz-tutorial/src/build'
make[1]: *** [CMakeFiles/Makefile2:143: CMakeFiles/myviz.dir/all] Error 2
make[1]: Leaving directory '/home/mukund/.cache/yay/ros-melodic-librviz-tutorial/src/build'
make: *** [Makefile:130: all] Error 2
==> ERROR: A failure occurred in build().
Aborting...
Error making: ros-melodic-librviz-tutorial
Ah kk I figured as much. So if I remember correctly you are running Manjaro right? Manjaro lags behind in packages from Arch, so you are running older version of software. If I also understand correctly, you are using the ArchLinux binary packages provided by bionade24. However those packages were compiled with Arch packages not Manjaro packages. Which means you cannot use them on your Manjaro system.
Specifically in this case, sudo updatedb && locate libPocoFoundation.so
gives me /usr/lib/libPocoFoundation.so.71
on Arch, while that package is at an older verision to you on Manjaro. So when you are trying to use bionade24's binaries it is trying to link against poco 71 instead of poco 64 (which is what you have). The solution for you is to not use ArchLinux binary packages and to compile ros on your own and even that may not work since Manjaro lags behind Arch (though it probably will).
In the future, since you have a non standard configuration if you can mention you are using Manjaro in your issues that would be great.
So in order for you to install ros on your system, let us first remove the binary repos that you have added. (such as arch4edu and bionade24's oscloud)
After than let us remove all ros packages on your system: yay -Rns $(yay -Qsq ros-melodic)
Please give the output of yay -Qsq ros-melodic
after running this command.
Let us delete the cache folder, rm -rf ~/.cache/yay
Please give output of ls
after running this command
And now let us do a install of this package yay -Syu ros-melodic-image-view
While going through this process please record or take snapshots before/after each step for proof that you did these steps, so that we can help you better.
Ok that makes sense and clears up a lot of stuff. I did as you said and everything installed properly. Will attempt to install desktop-full
tomorrow, should work out well.
Ok that makes sense and clears up a lot of stuff. I did as you said and everything installed properly. Will attempt to install
desktop-full
tomorrow, should work out well.
Please stop using Manjaro. If you don't want to configure an Arch, use Anarchy install scripts or EndeavourOS (Antergos predecessor). This just is a another step bringing me to the point where I will patch catkin to not work on manjaro, because it really annoys that you're not following upstream and that's why the things don't work.
While it’s true that using Manjaro makes using the AUR really really bad, users are free to use whatever distro they want. Although @maujim if you do want to use a Arch based distro please use EndeavorOS, unless there is some other reason you are using Manjaro.
I think maujim is definitely at at fault for not letting us know he uses a different configuration, but as long as he lets us know that’s fine. Since we do not officially support Manjaro maybe we can just close all issues that use Manjaro and if other members of the community want to help out with those problems they are free to do so.
I think patching catkin to not use Manjaro is going pretty far and is also easy to circumvent. They can just create another package
I suggest we just close issues that we do not officially support but let people still discuss about them if they want to.
And yes @maujim if you want to use the AUR please use Arch or an Arch-based distro (as in they use the same package repositories) instead of a downstream Arch derived distro like Manjaro which keeps separate packages from Arch and is not package compatible. I am sure you can understand our frustration when we are trying to help you and spending time on resolving your issues but we have incomplete information and you working in an unsupported distro. It feels Iike we have been wasting our time, time that could have been used for helping others or moving the project forward. I’m not trying to discourage you at all and I know you did not do this intentionally, but understanding the weight of this discussion is important.
In any case switch over to Arch or use EndeavorOS or other similar Arch based distros, and we will gladly continue helping you out with your problems, although I imagine there will be significantly smaller amount of them ;)
Is there a way to make ROS more agnostic of specific lib versions? Are differences in poco breaking for ROS? If not, maybe this can in general be avoided by having ROS look for *.so
without the number?
This issue is based on how C++ codebases are built. When you build a C++ project, it gets linked to the specific versioned .so you have at the time. In order to resolve this issue the only way is to rebuild the package. The problem above was the user was using packages built for the packages on Arch instead of the ones on Manjaro.
Error message: