2015-09-25 75 views
5

編譯我跑的FFmpeg的./configure腳本如下:FFmpeg的不共享庫

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-fPIC -m64 -I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-pic --extra-ldexeflags=-pie --enable-shared

當我嘗試編譯FFmpeg的與--enable-shared選項如上,我得到這個錯誤:

/usr/bin/ld: /home/guel/ffmpeg_build/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 /home/guel/ffmpeg_build/lib/libx264.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status

我曾爲了增加--enable-pic--extra-ldexeflags=-pie以及-fPIC -m64--extra-cflags擺脫這個重定位錯誤在這裏建議:​​

但我仍然得到相同的錯誤。我需要編譯ffmpeg與--enable-shared選項來與OpenCV接口,所以我必須在這裏找到解決方法。

+0

我有這個問題,只是拉最新的Github修復它給我。 – brian

回答

6

我設法解決了這個問題。實際上,增加-fPIC--enable-pic應該已經做到了,但我愚蠢地以前編譯過依賴庫(libx264和其他許多),因爲我不關心它,當我第一次編譯FFmpeg並且盲目地遵循編譯這裏指導:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

在用--enable-shared選項重新編譯所有庫後,FFmpeg也用該選項成功編譯。

+1

謝謝,這對我非常有幫助。出於同樣的原因,我遇到了同樣的問題。 – Shiro