ffmpeg установить в CentOS 64-битная ошибка «установить с -fPIC» - PullRequest
8 голосов
/ 01 марта 2012

Я получаю эту ошибку при попытке скомпилировать ffmpeg на 64-битной машине CentOS.

Вот мои параметры ./configure:

./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-pthreads --enable-libx264 --enable-libxvid --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libvpx

make

Я получаю следующую ошибку при компиляции источника:

/usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libvpx.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libavcodec/libavcodec.so.54] Error 1

Как мне обойти эту ошибку и запустить libvpx с последней версией ffmpeg на моем 64-битном компьютере CentOS

Ответы [ 6 ]

10 голосов
/ 18 мая 2012

Поскольку вы настроили FFMPEG с «--enable-shared», вам также необходимо настроить некоторые из его других библиотек с «--enable-shared», и все они должны использовать один и тот же параметр.

Это сообщение об ошибке в основном говорит о том, что вам нужно снова скомпилировать libvpx, добавив «--enable-shared» в команду configure, затем попробуйте снова скомпилировать FFMPEG (также настроенный с «--enable-shared»). Скорее всего, вы получите ту же ошибку, но вместо «libvpx» будет написано «libx264» или «libmp3lame», поэтому вам также нужно будет перекомпилировать эти библиотеки с помощью «--enable-shared» в команде configure.

3 голосов
/ 16 мая 2013

Я получил аналогичную ошибку при компиляции ffmpeg на компьютере x86_64 под управлением Oracle Linux 6.3. Oracle Linux основан на Red Hat и, таким образом, похож на CentOS в первоначальном вопросе.

Настройка:

./configure --enable-shared --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-libx264 --enable-encoder=x264 --enable-gpl

сделать:

/usr/bin/ld: /usr/local/lib/libx264.a(common.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libx264.a: could not read symbols: Bad value

В моем случае этот ответ , хотя и частично специфичный для Ubuntu, проливает больше света на основную проблему, касающуюся систем x86_64 в целом:

"Я полагаю, если вы включите общий доступ на FFmpeg, вы должны сделать то же самое на x264 в системах x86_64, иначе у вас будет общий FFmpeg для PIC и non-PIC static x264. "

Исправление состояло в том, чтобы исходники x264, которые я изначально скомпилировал, используя флаг «--enable-static» с configure (который генерировал «/usr/local/lib/libx264.a»), перекомпилируется с использованием флага "--enable-shared", который генерирует правильную цель "/usr/local/lib/libx264.so":

1st Attempt:
    1. cd /tmp
    2. wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
    3. tar xfv last_x264.tar.bz2; 
    4. cd x264-snapshot-xxxxxx
    5. ./configure --enable-static
    6. make && make install

2nd Attempt:
    1. cd /tmp/x264-snapshot-xxxxxx
    2. make distclean
    3. ./configure --enable-shared
    4. make && make install
2 голосов
/ 01 марта 2012

Попробуйте

CFLAGS=-fPIC ./configure ...<your config options>...

Чтобы добавить флаг, в котором упоминается ошибка, отсутствует.

0 голосов
/ 16 февраля 2017

У меня была эта проблема в сборке MythTV с libx264.a

Я скачал и собрал, как предложил Сахид.

Единственное, что /usr/local/lib/libx264.a не изменилось, когда я "сделал установку". Я должен был сделать "make install-lib-static"

0 голосов
/ 01 марта 2012

Скомпилировали ли вы libvpx с --shared и -fPIC, чтобы он сгенерировал libvpx.so*?

Если нет, вы можете попробовать комментарии № 6 и № 7 в этом выпуске.

0 голосов
/ 01 марта 2012

(И вопрос ...?)

Совместно используемые библиотеки должны состоять из объектного кода PIC, но ffmpeg этого не удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...