[FFmpeg-devel] [PATCH] restoring binary compatibility with ffmpeg 0.5
Måns Rullgård
mans
Thu Jun 10 17:04:45 CEST 2010
Michael Niedermayer <michaelni at gmx.at> writes:
> On Mon, Jun 07, 2010 at 07:24:30AM +0200, Reinhard Tartler wrote:
>> On So, Jun 06, 2010 at 22:29:25 (CEST), Reimar D?ffinger wrote:
>>
>> > However here we have the problem that this would break e.g. on Solaris,
>> > since a symbol is not allowed to have multiple versions there.
>> > I think the real mistake was made during the move: the version should
>> > never have been changed, despite the move to a different library...
>> > Am I right that changing the linker script to
>> > LIBAVFORMAT_52 {
>> > global: av_init_packet;
>> > };
>> > LIBAVCODEC_$MAJOR {
>> > global: *;
>> > };
>> > would avoid the compatibility issue with 0.5 (though breaking it
>> > for several versions in-between)?
>>
>> I've tried this as well, but unfortunately, this doesn't work out:
>>
>> >> objdump -T /tmp/ffmpeg/lib/libavcodec.so.52 | grep av_init_packet
>> 000c0ce0 g DF .text 00000058 LIBAVFORMAT_52 av_init_packet
>>
>> >> ffplay /tmp/Elephants_Dream-720p-Stereo.webm
>> FFplay version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2003-2009 Fabrice Bellard, et al.
>> configuration: --extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
>> libavutil 49.15. 0 / 49.15. 0
>> libavcodec 52.20. 1 / 52.72. 2
>> libavformat 52.31. 0 / 52.64. 2
>> libavdevice 52. 1. 0 / 52. 2. 0
>> libavfilter 0. 4. 0 / 0. 4. 0
>> libswscale 0. 7. 1 / 0.11. 0
>> libpostproc 51. 2. 0 / 51. 2. 0
>> built on Mar 4 2010 12:35:30, gcc: 4.4.3
>> ffplay: relocation error: ffplay: symbol av_init_packet, version LIBAVFORMAT_52 not defined in file libavformat.so.52 with link time reference
>>
>> It seems that this symbol really needs to be in libavformat.
>
> Following fixes it (at least with my ld.so, ive not tried it without the
> other bugfixes, but ill look into it if that alone doesnt work for you)
>
> I think its reasonable if the ffmpeg project requires a linker that is not
> full of such arbitrary failure conditions.
I think it is totally unreasonable that to require a linker that
doesn't exist and doesn't stand a chance in hell of ever existing, no
matter how superior it may be technically, morally, or otherwise.
> Also iam quite curious how solaris and other pre/non gnu systems handle this.
> Its really silly to fail just because a symbol is moved from libA to a
> dependancy of libA (and then only if versioning is enabled)
Silly or not, this is how things work, and we have to live with it.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list