Я получил аналогичную ошибку при компиляции 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