Opened 14 years ago
Last modified 14 years ago
#2043 reopened defect
Makefile does not handle shared libraries
| Reported by: | Owned by: | ||
|---|---|---|---|
| Priority: | normal | Component: | build system |
| Version: | HEAD | Severity: | blocker |
| Keywords: | Cc: | belegdol+mplayer@… | |
| Blocked By: | Blocking: | ||
| Reproduced by developer: | no | Analyzed by developer: | no |
Description
I've been experimenting with trying to use shared ffmpeg libraries.
It seems the Makefile correctly handles the --disable-ffmpeg_a configure option by removing references to these files. However, it does nothing to include the necessary references to the external shared libraries. I examined the command line, and I found it missing "-llibpostproc -llibavfilter -llibavformat -llibavcodec -llibswscale -llibswresample -llibavutil" which would be needed to link to the external shared ffmpeg libraries. (On my system, they are in /usr/lib64).
The code in question appears to be at lines 692-698 of the makefile. There appears to be code for handling FFMPEG_A but nothing for FFMPEG_SO.
Unfortunately, I am not that familiar with the build process to propose code to address the issue. Any help you can provide would be appreciated.
Attachments (2)
Change History (8)
comment:1 by , 14 years ago
| op_sys: | Linux → All |
|---|---|
| Resolution: | → worksforme |
| Status: | new → closed |
comment:2 by , 14 years ago
| Owner: | changed from to |
|---|---|
| Resolution: | worksforme |
| Status: | closed → reopened |
I've attached the results from "make -p' and my configure options are below.
With ffmpeg_a disabled, I would *think* it would generate something in the make file telling it to link to the enternal libraries, but it doesn't.
configure \
--prefix=/usr \
--bindir=/usr/bin \
--datadir=/usr/share/mplayer \
--mandir=/usr/share/man \
--confdir=/etc/mplayer \
--libdir=/usr/lib64 \
--codecsdir=/usr/lib64/codecs \
--extra-cflags="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic" \
--language=all \
--enable-joystick \
--enable-lirc \
--enable-menu \
--enable-radio \
--enable-radio-capture \
--enable-runtime-cpudetection \
--enable-unrarexec \
--disable-dvdread-internal \
--disable-libdvdcss-internal \
--disable-nemesi \
--disable-smb \
--disable-faac \
--disable-mad \
--disable-libmpeg2-internal \
--disable-tremor-internal \
--disable-bitmap-font \
--disable-dga1 --disable-dga2 \
--disable-directfb \
--disable-svga \
--disable-termcap \
--enable-xvmc \
--with-xvmclib=XvMCW \
--disable-arts \
--disable-esd \
--disable-jack \
--disable-openal \
--disable-ffmpeg_a
comment:3 by , 14 years ago
I'm also adding this attachment which contains the complete output of configure and make from a clean build of revision 34777.
comment:4 by , 14 years ago
| Cc: | added |
|---|
comment:5 by , 14 years ago
The other problem is that since revision 34243 libmpdemux/mp_taglists.c includes libavformat/internal.h, which makes building without the ffmpeg tree present impossible.
I am not sure how Joseph has solved this problem, but judging from the linking error it seems like these two might be related.
comment:6 by , 14 years ago
| Owner: | changed from to |
|---|

This has too few details to be useful. Shared libraries work for me. I split out the libpostproc check, which should help if your local FFmpeg installation comes without libpostproc. If that does not fix your problem we at least need you to report all the fancy details like, for starters, error messages from your linker.