Date: Fri, 8 Aug 2008 22:00:11 +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: <53a1e0710808080700u15d74a98jc308a7fc408b64b6@mail.gmail.com> In-Reply-To: <53a1e0710808080646y22b93d4eu12cdf4b4eeea619e@mail.gmail.com> References: <53a1e0710808080529g1d63e79ej4130f6104914f9f0@mail.gmail.com> <489C402B.3000909@icyb.net.ua> <53a1e0710808080646y22b93d4eu12cdf4b4eeea619e@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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?53a1e0710808080700u15d74a98jc308a7fc408b64b6>