transcode: 1.0.5_3 => 1.0.6_1 fails at configure(Libs.private)

Henry Hu henry.hu.sh at gmail.com
Fri Aug 8 14:00:17 UTC 2008


Sorry, I'm running FreeBSD 7-STABLE i386, so maybe the lib containing
pthread_* is not libthr in your system. But there should be one.

2008/8/8 Henry Hu <henry.hu.sh at gmail.com>:
> from pkg-config manpage:
>
> Libs:
>
> This line should give the link flags specific to your package. Don't
> add any flags for required packages; pkg-config will add those
> automatically.
>
> Libs.private: This line should list any private libraries in use.
> Private libraries are libraries which are not exposed through your
> library, but are needed in the case of static linking.
>
> Since we are doing dynamic linking, I think the problem is that
> libavcodec.so should depends on the library that provides pthread_*
> functions, and the compiling command does not need -pthread.
>
> $ ldd /usr/local/lib/libavcodec.so
> /usr/local/lib/libavcodec.so:
>        liba52.so.0 => /usr/local/lib/liba52.so.0 (0x28621000)
>        libavutil.so.1 => /usr/local/lib/libavutil.so.1 (0x2862c000)
>        libz.so.4 => /lib/libz.so.4 (0x28637000)
>        libm.so.5 => /lib/libm.so.5 (0x28649000)
>        libfaac.so.0 => /usr/local/lib/libfaac.so.0 (0x2865e000)
>        libfaad.so.0 => /usr/local/lib/libfaad.so.0 (0x2866e000)
>        libmp3lame.so.0 => /usr/local/lib/libmp3lame.so.0 (0x286ac000)
>        libogg.so.5 => /usr/local/lib/libogg.so.5 (0x2871d000)
>        libtheora.so.0 => /usr/local/lib/libtheora.so.0 (0x28722000)
>        libvorbis.so.4 => /usr/local/lib/libvorbis.so.4 (0x2876d000)
>        libvorbisenc.so.2 => /usr/local/lib/libvorbisenc.so.2 (0x28795000)
>        libx264.so.50 => /usr/local/lib/libx264.so.50 (0x2888e000)
>        libxvidcore.so.4 => /usr/local/lib/libxvidcore.so.4 (0x2894c000)
>        libthr.so.3 => /lib/libthr.so.3 (0x28a62000)
>        libc.so.7 => /lib/libc.so.7 (0x28089000)
>        libmp4v2.so.0 => /usr/local/lib/libmp4v2.so.0 (0x28a75000)
>        libX11.so.6 => /usr/local/lib/libX11.so.6 (0x28b34000)
>        libgpac.so.1 => /usr/local/lib/libgpac.so.1 (0x28c1c000)
>        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28e7e000)
>        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28f73000)
>        libxcb-xlib.so.0 => /usr/local/lib/libxcb-xlib.so.0 (0x28f7e000)
>        libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x28f80000)
>        librpcsvc.so.4 => /usr/lib/librpcsvc.so.4 (0x28f97000)
>        libssl.so.5 => /usr/lib/libssl.so.5 (0x28f9f000)
>        libcrypto.so.5 => /lib/libcrypto.so.5 (0x28fe0000)
>        libXau.so.6 => /usr/local/lib/libXau.so.6 (0x29139000)
>        libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x2913c000)
>
> You see libthr.so besides other libraries, which provides pthread_* functions.
> In fact, I've written a small program just containing a call to
> avcodec_thread_init, and compiled it successfully without -pthread,
> just -lavcodec.
> So the problem is that your libavcodec does not depends on libthr.
>
> I've tried static linking and it needs -pthread. Libs.private is
> outputed when adding -static to `pkg-config --libs libavcodec`
>
>
> 2008/8/8 Andriy Gapon <avg at icyb.net.ua>
>>
>> on 08/08/2008 15:29 Henry Hu said the following:
>> > In my config.log, I found that there is -pthread in the arguments.
>> > It comes from $LIBAVCODEC_EXTRA_LIBS, which comes from `pkg-config
>> > --libs libavcodec`
>> >
>> > $ pkg-config --libs libavcodec
>> > -pthread -L/usr/local/lib -lavcodec -lz -la52 -lfaac -lfaad -lmp3lame
>> > -lx264 -lxvidcore -ltheora -lvorbisenc -lavutil -lvorbis -lm -logg
>> >
>> > So it is present when libavcodec(ffmpeg) is installed.
>> > So why is it missing in your libavcodec's pkgconfig file?
>>
>> Hmm, your analysis is correct but I am not quite sure what is wrong in
>> my env.
>>
>> What I have here is:
>> $ pkg-config --libs libavcodec
>> -L/usr/local/lib -lavcodec
>>
>> $ pkg_info -W /usr/local/libdata/pkgconfig/libavcodec.pc
>> /usr/local/libdata/pkgconfig/libavcodec.pc was installed by package
>> ffmpeg-2008.07.27_2
>>
>> $ fgrep -A1 libavcodec.pc /var/db/pkg/ffmpeg-2008.07.27_2/+CONTENTS
>> libdata/pkgconfig/libavcodec.pc
>> @comment MD5:2d54dcacfc8826101f1ba6163da27797
>>
>> $ md5 /usr/local/libdata/pkgconfig/libavcodec.pc
>> MD5 (/usr/local/libdata/pkgconfig/libavcodec.pc) =
>> 2d54dcacfc8826101f1ba6163da27797
>>
>> $ cat /usr/local/libdata/pkgconfig/libavcodec.pc
>> prefix=/usr/local
>> exec_prefix=${prefix}
>> libdir=${prefix}/lib
>> includedir=${prefix}/include
>>
>> Name: libavcodec
>> Description: FFmpeg codec library
>> Version: 51.61.0
>> Requires:
>> Requires.private: theora vorbisenc libavutil = 49.7.0
>> Conflicts:
>> Libs: -L${libdir} -lavcodec
>> Libs.private: -pthread -lz -lbz2 -lm -la52 -lfaad -ltheora -logg
>> -lvorbisenc -lvorbis -logg -lx264 -lm
>> Cflags: -I${includedir}
>>
>>
>> Not sure about Libs vs Libs.private in the .pc file.
>> Is this ffmpeg issue or transcode issue or pkg-config issue?
>> Perhaps -pthread should be listed in Libs?
>>
>> --
>> Andriy Gapon
>


More information about the freebsd-multimedia mailing list