Компиляция ffmpeg: как заставить его ссылаться на конкретный libx264?

Я пытаюсь скомпилировать новейшую версию ffmpeg (в CentOS 5.3). Сначала я скачал последнюю версию libx264, скомпилировал ее с помощью --enable-static и установил в /usr/local/. Однако, когда я затем компилирую ffmpeg, я получаю это сообщение об ошибке:

libavcodec/libavcodec.a(libx264.o): In function `X264_init':
/usr/local/src/ffmpeg/libavcodec/libx264.c:494: undefined reference to `x264_encoder_open_125'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1

Поискав в сети, я вижу, что это может произойти, если ffmpeg подбирает более старую версию libx264, которая у меня действительно есть (в /usr/lib) и не может быть удалена, потому что от нее зависят другие части программного обеспечения. Тогда возникает вопрос: как я могу заставить ffmpeg связываться с libx264, который мне нужен? В последний раз, когда мне приходилось это делать (правда, год назад), у меня тоже было 2 версии libx264, и я не помню, чтобы мне приходилось делать что-то особенное. Есть ли переключатель конфигурации, который я забыл?


person PaulJ    schedule 22.08.2012    source источник
comment
Вы захотите передать некоторые дополнительные флаги компилятора и компоновщика, чтобы /usr/local/ искался перед /usr/. Что-то вроде -I/usr/local/include и -L/usr/local/lib. Ознакомьтесь с документацией gcc по этим флагам для получения дополнительной информации.   -  person blahdiblah    schedule 23.08.2012
comment
Так что мне нужно редактировать Makefile ffmpeg самостоятельно?   -  person PaulJ    schedule 23.08.2012
comment
Нет. configure имеет параметры для передачи дополнительных флагов, обычно что-то вроде configure --extra-cflags <blah> --extra-ldflags <blah> или подобных. Должен быть задокументирован в configure --help.   -  person blahdiblah    schedule 23.08.2012
comment
Спасибо, но единственное, что я смог найти в ./configure --help, это --extra-cflags и --host-cflags, которые не были похожи на то, что я ищу (похоже, они были для кросс-компиляции ). В конце концов я решил поступить проще и временно удалить другой пакет x264 перед компиляцией... :-)   -  person PaulJ    schedule 23.08.2012


Ответы (2)


Использование проекта android-ffmpeg git в качестве примера со статическими библиотеками x264 и, как уже говорилось, «blahdblah» ... Я думаю, вам просто нужно правильно настроить пути к библиотекам на этапах CC и LINK. Обратите внимание на переключатели cflags и ldflags внизу ссылки.

Я не хочу усложнять ситуацию, представляя пример Android, но может помочь взглянуть на этот пример «config_ffmpeg».

person Robert Rowntree    schedule 23.08.2012

вы просто пытаетесь декодировать h264, у нас есть фреймворк на основе ffmpeg .8, который кажется немного более стабильным, чем последний

www.github.com/mooncatventures-группа

person Michelle Cannon    schedule 29.08.2012