How to link SYSV and GNU/Linux shared libs

96 views Asked by At
file /usr/lib/aarch64-linux-gnu/libavcodec-ffmpeg.so.56.60.100 
/usr/lib/aarch64-linux-gnu/libavcodec-ffmpeg.so.56.60.100: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=e534adc24d3ba924851e5a11dc9eee87d5008d36, stripped
file /usr/lib/aarch64-linux-gnu/libopencv_highgui.so.2.4.9 
/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.2.4.9: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=2a6d6bf1318da7a8593b96359b3c8a66008744ee, stripped

Notice that these two differ in the way of (SYSV) vs (GNU/Linux).

gcc/c++ linker cannot link them,libopencv_highgui.so.2.4.9: undefined reference to `avio_close@LIBAVFORMAT_FFMPEG_56' which is actually defined in this file.

Having problem link against these 2 libs in my project, libopencv_highgui.so depends on libavcodec-ffmpeg.so. I noticed that on my system they two have different file info (some type), the order of the -l flags for them is correct (libavcodec-ffmpeg.so comes after), don't know how to get them linked.

0

There are 0 answers