2016-04-28 4 views
4

Gibt es eine Möglichkeit, ich kann konfigurieren, ffmpeg shared libraries für Android ohne Versionsnummer Suffixe zu bauen? Ich kann mit verschiedenen Optionen bauen, bekomme aber immer Dateien wie "libavcodec.so.57". Ich würde die Bibliotheken ohne Suffixe wie "libavcodec.so" benötigen. Ich dachte, die Option "--disable-symver" würde den Trick machen, aber leider nicht. Das Problem ist, dass ich eine Bibliothek (.so Datei) habe, die auf ffmpeg shared Bibliotheken ohne Suffixe angewiesen ist und daher nicht laden kann. Ich habe meistens die Anweisungen here befolgt.Wie man ffmpeg Shared Libraries ohne Versionssuffix erstellt

Antwort

5

Fragen zu stellen führt immer dazu, Antworten zu finden. deshalb war ich erfolgreich, graben in die make-dateien geholfen. wie folgt vorgehen:

  • führen Sie Ihre Konfiguration
  • find "config.mak"
  • Änderung

    SLIBNAME_WITH_VERSION = $ (SLIBNAME) $ (LIBVERSION) SLIBNAME_WITH_MAJOR = $ (SLIBNAME).. $ (LIBMAJOR)

    zu:

    SLIBNAME_WITH_VERSION = $ (SLIBNAME)
    SLIBNAME_WITH_MAJOR = $ (SLIBNAME)

  • Änderung

    SLIB_INSTALL_NAME = $ (SLIBNAME_WITH_VERSION) SLIB_INSTALL_LINKS = $ (SLIBNAME_WITH_MAJOR) $ (SLIBNAME)

    zu:

    SLIB_INSTALL_NAME = $ (SLIBNAME)
    SLIB_INSTALL_LINKS =

  • ausführen "make" oder "make -j $ (nproc)“

  • "make install"

jetzt haben Sie gemeinsam genutzte Bibliotheken ohne Endungen.
können Sie ihre Abhängigkeiten überprüfen, indem "readelf -d somefile.so"

1

Keine Notwendigkeit config.mak

Gerade --target-o = android Anruf

zu konfigurieren hinzufügen zu ändern Mein Beispiel

NDK=${HOME}/android-sdk-linux/ndk-bundle 
ABI=arm 

./configure \ 
    --arch=$ABI \ 
    --target-os=android \ 
    --disable-everything \ 
    --disable-symver \ 
    --enable-runtime-cpudetect \ 
    --enable-pic \ 
    --enable-shared \ 
    --disable-static \ 
    --prefix=../build/$ABI \ 
    --cross-prefix=$NDK/toolchains/$ABI-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/$ABI-linux-androideabi- \ 
    --sysroot=$NDK/platforms/android-26/arch-$ABI \ 
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -fPIC -DANDROID" \ 
    --extra-ldflags="" \ 
    || exit 1 

    make clean 
    make -j4 || exit 1 
    make install || exit 1 
+0

Dies ist eine gute Antwort. Keine Notwendigkeit, Patches zu pflegen. Für target-os = android wurden überhaupt keine Versionsnummern generiert –