Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Aug 2008 21:46:06 +0800
From:      "Henry Hu" <henry.hu.sh@gmail.com>
To:        "Andriy Gapon" <avg@icyb.net.ua>
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: transcode: 1.0.5_3 => 1.0.6_1 fails at configure(Libs.private)
Message-ID:  <53a1e0710808080646y22b93d4eu12cdf4b4eeea619e@mail.gmail.com>
In-Reply-To: <489C402B.3000909@icyb.net.ua>
References:  <53a1e0710808080529g1d63e79ej4130f6104914f9f0@mail.gmail.com> <489C402B.3000909@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53a1e0710808080646y22b93d4eu12cdf4b4eeea619e>