2015-09-25 15 views
5

wpadłem skryptu ./configure z FFmpeg następująco:FFmpeg nie skompilować z bibliotek dzielonych

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

Przy próbie kompilacji FFmpeg z --enable-shared opcji jak wyżej, mam ten błąd:

/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

I dodał --enable-pic--extra-ldexeflags=-pie, jak również -fPIC -m64 do --extra-cflags aby pozbyć ten błąd przeniesienia sugerowany tutaj: https://www.ffmpeg.org/platform.html

Ale nadal otrzymuję ten sam błąd. Muszę skompilować ffmpeg z opcją --enable-shared, aby połączyć go z OpenCV, więc muszę znaleźć obejście tutaj.

+0

Miałem ten problem i po prostu wyciągając najnowsze z Githuba naprawiłem to dla mnie. – brian

Odpowiedz

6

Udało mi się rozwiązać problem. W rzeczywistości dodatki: -fPIC i --enable-pic powinny były zrobić sztuczkę, ale ja głupio wcześniej skompilowałem biblioteki zależności (libx264 i wiele innych) za pomocą opcji --disable-shared, ponieważ nie przejmowałem się tym, kiedy po raz pierwszy skompilowałem FFmpeg i ślepo podążyłem za kompilacją przewodnik tutaj: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Po ponownym skompilowaniu wszystkich bibliotek z opcją --enable-shared, FFmpeg również skompilowane z tą opcją pomyślnie.

+1

Dzięki, że pomogło mi to niezmiernie. Z tych samych powodów korzystałem z tego samego problemu. – Shiro