Opened 10 years ago

Closed 10 years ago

#3104 closed defect (worksforme)

Impossible to disable jack or SDL

Reported by: william Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

If you have libjack installed in the system it is impossible to build ffmpeg with linking it to libjack.so

It seems the same is valid for SDL. It may as well be for other libraries.

How to reproduce:

  1. Have libjack installed in the system
  1. ./configure --disable-indev=jack

$ cat work/ffmpeg-2.1/config.log | grep jack
jack_indev
jack_indev
jack_indev=no
jack_indev_deps='jack_jack_h sem_timedwait'
list=jack_indev
name=jack_indev

$ cat work/ffmpeg-2.1/config.h | grep -i jack
#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0
#define CONFIG_JACK_INDEV 0

$ ldd work/stage/usr/local/bin/ffmpeg|grep -i jack

libjack.so.0 => /usr/local/lib/libjack.so.0 (0x803a78000)

Change History (3)

in reply to:  description comment:1 by Cigaes, 10 years ago

Replying to william:

$ cat work/ffmpeg-2.1/config.log | grep jack

UUoC

$ ldd work/stage/usr/local/bin/ffmpeg|grep -i jack

libjack.so.0 => /usr/local/lib/libjack.so.0 (0x803a78000)

Are you sure ffmpeg itself is linked with libjack? It could be brought by another library. You can use objdump -p to see the libraries ffmpeg directly links, in the NEEDED entries.

comment:2 by william, 10 years ago

Yes, sorry, I may not have been clear enough, it is not ffmpeg binary that links to the libjack, it is libavdevice.so

readelf -a work/stage/usr/local/lib/libavdevice.so|grep jack|grep NEEDED

0x0000000000000001 (NEEDED) Shared library: [libjack.so.0]

But libavdevice is built and part of ffmpeg.

Sorry if I am missing anything.

comment:3 by Carl Eugen Hoyos, 10 years ago

Component: build systemundetermined
Resolution: worksforme
Status: newclosed
Version: 2.1unspecified
$ make distclean
$ configure && make ffmpeg
$ ldd ffmpeg
...
        libjack.so.0 => /usr/lib64/libjack.so.0 (0x00007fc7e5520000)
        libSDL-1.2.so.0 => /usr/lib64/libSDL-1.2.so.0 (0x00007fc7e4fa9000)
...
$ make distclean
$ configure --disable-indev=jack --disable-outdev=sdl && make ffmpeg
$ ldd ffmpeg
(no sdl, no jack)
$ make distclean
$ configure --enable-shared && make libavdevice/libavdevice.so
$ ldd libavdevice/libavdevice.so
...
        libjack.so.0 => /usr/lib64/libjack.so.0 (0x00007fe5d8a3a000)
        libSDL-1.2.so.0 => /usr/lib64/libSDL-1.2.so.0 (0x00007fe5d84c3000)
...
$ make distclean
$ configure --enable-shared --disable-indev=jack --disable-outdev=sdl && make libavdevice/libavdevice.so
$ ldd libavdevice/libavdevice.so
(no sdl, no jack)
Note: See TracTickets for help on using tickets.