robotology / yarp

YARP - Yet Another Robot Platform
http://www.yarp.it
Other
529 stars 195 forks source link

Failure to compile YARP with the option `ENABLE_yarpcar_portmonitor`, ON #3067

Closed EhsanRanjbari closed 10 months ago

EhsanRanjbari commented 10 months ago

I am having a compilation error as below when the option ENABLE_yarpcar_portmonitor is ON: (https://github.com/ami-iit/element_haptic-gloves/issues/159#issuecomment-1805295330)

[ 50%] Building CXX object src/portmonitors/image_compression_ffmpeg/CMakeFiles/yarp_pm_image_compression_ffmpeg.dir/ffmpegPortmonitor.cpp.o
[ 50%] Linking CXX shared module ../../../lib/yarp/yarp_pm_image_compression_ffmpeg.so
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libswscale.a(hscale_fast_bilinear_simd.o): relocation R_X86_64_32S against `.text.unlikely' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
make[5]: *** [src/portmonitors/image_compression_ffmpeg/CMakeFiles/yarp_pm_image_compression_ffmpeg.dir/build.make:118: lib/yarp/yarp_pm_image_compression_ffmpeg.so] Error 1
make[4]: *** [CMakeFiles/Makefile2:5623: src/portmonitors/image_compression_ffmpeg/CMakeFiles/yarp_pm_image_compression_ffmpeg.dir/all] Error 2
make[3]: *** [Makefile:156: all] Error 2
make[2]: *** [CMakeFiles/YARP.dir/build.make:85: src/YARP/CMakeFiles/YCMStamp/YARP-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:1083: CMakeFiles/YARP.dir/all] Error 2
make: *** [Makefile:101: all] Error 2

Configuration (please complete the following information):

see: https://github.com/robotology/yarp/issues/2885#issuecomment-1876782445

traversaro commented 10 months ago

Can you report the output of apt list --installed and the content of YARP's CMakeCache.txt ?

EhsanRanjbari commented 10 months ago

Can you report the output of apt list --installed and the content of YARP's CMakeCache.txt ?

apt list --installed: apt_list_installed.txt

YARP's CMakeCache.txt: CMakeCache.txt

traversaro commented 10 months ago

Ok, the strange part of the CMakeCache is this one:

//FFMPEG's avcodec include directory
FFMPEG_avcodec_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's avcodec library
FFMPEG_avcodec_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libavcodec.so

//FFMPEG's avdevice include directory
FFMPEG_avdevice_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's avdevice library
FFMPEG_avdevice_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libavdevice.so

//FFMPEG's avfilter include directory
FFMPEG_avfilter_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's avfilter library
FFMPEG_avfilter_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libavfilter.so

//FFMPEG's avformat include directory
FFMPEG_avformat_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's avformat library
FFMPEG_avformat_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libavformat.so

//FFMPEG's avresample include directory
FFMPEG_avresample_INCLUDE_DIR:PATH=FFMPEG_avresample_INCLUDE_DIR-NOTFOUND

//FFMPEG's avresample library
FFMPEG_avresample_LIBRARY:FILEPATH=FFMPEG_avresample_LIBRARY-NOTFOUND

//FFMPEG's avutil include directory
FFMPEG_avutil_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's avutil library
FFMPEG_avutil_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libavutil.so

//FFMPEG's swresample include directory
FFMPEG_swresample_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's swresample library
FFMPEG_swresample_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libswresample.so

//FFMPEG's swscale include directory
FFMPEG_swscale_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu

//FFMPEG's swscale library
FFMPEG_swscale_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libswscale.a

The FFMPEG_swscale_LIBRARY variable should actually be /usr/lib/x86_64-linux-gnu/libswscale.so, and I have no idea why instead it is set to /usr/lib/x86_64-linux-gnu/libswscale.a. Both files are part of the same Debian package libswscale-dev, see:

traversaro@IITICUBLAP257:~$ apt-file search /usr/lib/x86_64-linux-gnu/libswscale.a
libswscale-dev: /usr/lib/x86_64-linux-gnu/libswscale.a
traversaro@IITICUBLAP257:~$ apt-file search /usr/lib/x86_64-linux-gnu/libswscale.so
libswscale-dev: /usr/lib/x86_64-linux-gnu/libswscale.so
libswscale5: /usr/lib/x86_64-linux-gnu/libswscale.so.5
libswscale5: /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100

I wonder if somehow /usr/lib/x86_64-linux-gnu/libswscale.so is corrupted for some reason on your machine? What is the output of file /usr/lib/x86_64-linux-gnu/libswscale.so and of file /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100?

If the /usr/lib/x86_64-linux-gnu/libswscale.so file exists, can you try to delete the YARP build cache and re-configure and re-compile YARP, i.e. :

cd /home/Ehsan/robotology-superbuild/
rm -rf ./build/src/YARP
make YARP

?

If the problem persists, I would be curious to debug the issue.

EhsanRanjbari commented 10 months ago

What is the output of file /usr/lib/x86_64-linux-gnu/libswscale.so

Ehsan@iiticublap281lu:~$ file /usr/lib/x86_64-linux-gnu/libswscale.so
/usr/lib/x86_64-linux-gnu/libswscale.so: cannot open `/usr/lib/x86_64-linux-gnu/libswscale.so' (No such file or directory)

file /usr/lib/x86_64-linux-gnu/libswscale.so. 5.9.100

Ehsan@iiticublap281lu:~$ file /usr/lib/x86_64-linux-gnu/libswscale.so. 5.9.100
/usr/lib/x86_64-linux-gnu/libswscale.so.: cannot open `/usr/lib/x86_64-linux-gnu/libswscale.so.' (No such file or directory)
5.9.100:                                  cannot open `5.9.100' (No such file or directory)
traversaro commented 10 months ago

Bingo! For some reason /usr/lib/x86_64-linux-gnu/libswscale.so is not there, I have no idea why. Can you try to re-install libswscale-dev?

traversaro commented 10 months ago

What is the output of file /usr/lib/x86_64-linux-gnu/libswscale.so

Ehsan@iiticublap281lu:~$ file /usr/lib/x86_64-linux-gnu/libswscale.so
/usr/lib/x86_64-linux-gnu/libswscale.so: cannot open `/usr/lib/x86_64-linux-gnu/libswscale.so' (No such file or directory)

file /usr/lib/x86_64-linux-gnu/libswscale.so. 5.9.100

Ehsan@iiticublap281lu:~$ file /usr/lib/x86_64-linux-gnu/libswscale.so. 5.9.100
/usr/lib/x86_64-linux-gnu/libswscale.so.: cannot open `/usr/lib/x86_64-linux-gnu/libswscale.so.' (No such file or directory)
5.9.100:                                  cannot open `5.9.100' (No such file or directory)

Sorry, I did a typo, the correct command was file /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100.

EhsanRanjbari commented 10 months ago

Sorry, I did a typo, the correct command was file /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100.

Ehsan@iiticublap281lu:~$ file /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100
/usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a9a5e85a05918ececa64eb96fc88599b127990c3, stripped
traversaro commented 10 months ago

Interesting, so only /usr/lib/x86_64-linux-gnu/libswscale.so . At this point I would try to reinstall libswscale-dev to see if it ends being installed.

EhsanRanjbari commented 10 months ago

I would try to reinstall libswscale-dev to see if it ends being installed.

I did try to install but nothing was installed.

traversaro commented 10 months ago

I would try to reinstall libswscale-dev to see if it ends being installed.

I did try to install but nothing was installed.

Which command did you run? To re-install the package, you need to run sudo apt install --reinstall libswscale-dev.

EhsanRanjbari commented 10 months ago

I would try to reinstall libswscale-dev to see if it ends being installed.

I did try to install but nothing was installed.

Which command did you run? To re-install the package, you need to run sudo apt install --reinstall libswscale-dev.

ah, ok I did sudo apt-get install -y libswscale-dev, but let me use your command.

EhsanRanjbari commented 10 months ago

After running the sudo apt install --reinstall libswscale-dev, it installed it. and here is the output for the commands above: file /usr/lib/x86_64-linux-gnu/libswscale.so:

/usr/lib/x86_64-linux-gnu/libswscale.so: symbolic link to libswscale.so.5.9.100

file /usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100:

/usr/lib/x86_64-linux-gnu/libswscale.so.5.9.100: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a9a5e85a05918ececa64eb96fc88599b127990c3, stripped

Now, I am gonna recompile to see if the issue got fixed.

traversaro commented 10 months ago

Now, I am gonna recompile to see if the issue got fixed.

You probably need to start from a clean build, or at least remove the FFMPEG_swscale_LIBRARY variable from YARP's CMake cache (or if you want to do quick, just change it from .a to .so. This because the cache is created only once, and if you just re-run CMake the cached values for the variables are used.

traversaro commented 10 months ago

By the way, do you have any idea of any operation that you did on your computer (with sudo permission) that could have removed /usr/lib/x86_64-linux-gnu/libswscale.so?

EhsanRanjbari commented 10 months ago

You probably need to start from a clean build, or at least remove the FFMPEG_swscale_LIBRARY variable from YARP's CMake cache (or if you want to do quick, just change it from .a to .so. This because the cache is created only once, and if you just re-run CMake the cached values for the variables are used.

Thanks. Before seeing this command I did reinstall it successfully without having the mentioned issue. Thanks! I will also do the clean install.

traversaro commented 10 months ago

Ok, feel free to close the issue then!

EhsanRanjbari commented 10 months ago

By the way, do you have any idea of any operation that you did on your computer (with sudo permission) that could have removed /usr/lib/x86_64-linux-gnu/libswscale.so?

I may recall something related to the scaling. I had an issue with the latest Ubuntu versions which when connecting to a second display, the resolution was high but the icons and tabs were tiny. To solve it I installed https://gitlab.gnome.org/GNOME/gnome-tweaks. It was a long time ago and I may have done some other stuff as well which I do not recall. I do not know if that could be the reason.

traversaro commented 10 months ago

It is difficult to tell, but thanks for reporting this!

traversaro commented 10 months ago

@EhsanRanjbari if you think the problem is solved, feel free to close the issue.

EhsanRanjbari commented 10 months ago

Closing the issue as completed. Thanks @traversaro