[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#693040: libav: Strange build failure on several archs

On Mon, Nov 12, 2012 at 12:09:57PM +0100, Reinhard Tartler wrote:
> Package: libav
> Version: 6:9~beta2-2
> Severity: important
> Tags: help
> I require assistance from a toolchain savy expert. I have uploaded a new
> upstream version of libav to experimental. Unfortunately, it fails to
> build on several architectures with the following error:
> gcc -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibswscale -Wl,-z,relro  -Wl,--as-needed -Wl,--warn-common -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample  -o avconv avconv_opt.o avconv_filter.o avconv.o cmdutils.o  -lavdevice -lavfilter -lavformat -lavresample -lavcodec -lswscale -lavutil -ldl -ldl -lXfixes -lXext -lX11 -lcdio_paranoia -lcdio_cdda -lcdio -ljack -lasound -ldc1394 -lraw1394 -lgcrypt -lxvidcore -lx264 -lvpx -lvpx -lvorbisenc -lvorbis -logg -ltheoraenc -ltheoradec -logg -lspeex -lschroedinger-1.0 -lrtmp -lz -lgnutls -lpulse-simple -lpulse -lopenjpeg -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lmp3lame -lgsm -lfreetype -lgnutls -lva -lm -pthread -lbz2 -lz  
> libavfilter/libavfilter.so: undefined reference to `ff_log2_tab'
This message appears to tell that libavfilter/libavfilter.so is not linked
to libavutil or libavutil doesn't export the symbol.

Checking libavfilter/libavfilter.so link command (from the armel log):

gcc -shared -Wl,-soname,libavfilter.so.3 -Wl,-Bsymbolic
-Wl,--version-script,libavfilter/libavfilter.ver -Llibavcodec
-Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil
-Llibswscale -Wl,-z,relro  -Wl,--as-needed -Wl,--warn-common
-o libavfilter/libavfilter.so.3 libavfilter/af_aformat.o
[object files skipped]
-lavformat -lavcodec -lavresample -lswscale -lavutil -ldl -ldl -lXfixes
-lXext -lX11 -lcdio_paranoia -lcdio_cdda -lcdio -ljack -lasound -ldc1394
-lraw1394 -lgcrypt -lxvidcore -lx264 -lvpx -lvpx -lvorbisenc -lvorbis
-logg -ltheoraenc -ltheoradec -logg -lspeex -lschroedinger-1.0 -lrtmp -lz
-lgnutls -lpulse-simple -lpulse -lopenjpeg -lopencv_core -lopencv_imgproc
-lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d
-lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy
-lopencv_flann -lmp3lame -lgsm -lfreetype -lgnutls -lva -lm -pthread -lbz2

Unless I'm missing something, this looks OK. Another possibility is that
libavutil doesn't export the symbol. I've checked libavutil51 which for
some reason is in the build-deps (though the link command apparently
should use the one from sources) and it exports the symbol. Also,
libavutil/libavutil.v contains ff_* as global: so the binary should have
the symbol exported. All in all, we need a failing tree to check whether
built libavutil/libavutil.so exports the symbol and whether
libavfilter/libavfilter.so is linked to libavutil.

Oh, and a third possibility: at the time of linking avconv (i.e. the
command that fails) dependency of libavfilter/libavfilter.so to libavutil
is resolved using a wrong library (not the one from /usr which is fine and
not libavutil/libavutil.so which we assume to be fine).


Attachment: signature.asc
Description: Digital signature

Reply to: