2016-07-01 17 views
3

Die neueste Version von FFmpeg ist 3.1.1. Nach Version 3.1 kann ich FFmpeg für x86 nicht kompilieren. (Aber 3.0.2 oder früheren Versionen erstellt werden kann.)Kompilieren FFmpeg 3.1.1 für X 86 mit Android NDK

Das Terminal zeigt ld: error: libavutil/../compat/strtod.o: incompatible target.

Mein OS ist Xubuntu 14.04 x86 und x86_64. (Ich beide versucht haben.)

Meine NDK Version ist r10e(x86) und r12b(x86_64).

Wenn ich FFmpeg 3.0.2 kompiliere, hat es keinen Fehler.

Das ist mein configure:

./configure \ 
--prefix="${PREFIX}" \ 
--enable-shared \ 
--disable-static \ 
--disable-doc \ 
--disable-ffplay \ 
--disable-ffprobe \ 
--disable-ffserver \ 
--cross-prefix="${PREFIX}/bin/i686-linux-android-" \ 
--target-os=linux \ 
--arch=x86 \ 
--enable-cross-compile \ 
--sysroot="${PREFIX}/sysroot" \ 
--extra-cflags="" \ 
--extra-ldflags="" \ 
--extra-libs="" \ 
--disable-debug 

${PREFIX} ist ein Verzeichnispfad für --install-dir Option verwendet, während make-standalone-toolchain.sh ausgeführt wird, die ein Werkzeug in Android NDK ist.

Es passiert nur, während ich kompiliere FFmpeg für x86. ARM Architektur ist in Ordnung.

Antwort

9

Ich stieß auf das gleiche Problem und fand einen Workaround. Achten Sie darauf, "compat/strtod.o" und "compat/strtod.d" zu entfernen, wenn Sie zuvor für eine andere Architektur erstellt haben. Aus irgendeinem Grund werden diese nicht neu erstellt, wenn Sie die Architektur in 3.1.1 ändern, aber es funktionierte in früheren Versionen gut. Sie sollten auch vor dem Aufbau "sauber machen" machen.

+0

Sie haben mein Problem gelöst. Danke ~ – user3032481

+2

@Dave Du hast mein Leben gerettet, wahrscheinlich 6 Stunden davon. –

+0

Ich habe das in meinem Skript "rm compat/strtod.o rm compat/strtod.d" gemacht und jetzt muss ich mich nicht um das Problem kümmern, war nervig und um ehrlich zu sein war nicht einfach herauszufinden, danke – Diljeet

Verwandte Themen