Kompilieren Sie ffmpeg in einer Mac OS-Umgebung, um eine solche Bibliotheksdatei zu generieren

Compiler-Umgebung:

  • Mac OS Monterey (12.3.1)
  • android-ndk (21.0.6113669)
  • ffmpeg-4.2.2

Laden Sie ffmpeg herunter: wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2, oder laden Sie es vom offiziellen Git herunter.

Hinweis: Die von mir verwendete NDK-Version ist 21.0.6113669. Ich habe Version 24.0.8215888 ausprobiert. Das Fehlen bestimmter Dateien führt dazu, dass die Kompilierung fehlschlägt. Dies sollte möglich sein, wenn die größere Version 21 ist, der konkrete Grund wurde jedoch nicht überprüft.

Hinweis: Nach Android NDK r17c hat Google GCC offiziell entfernt und unterstützt GCC nicht mehr. Neue Versionen von NDK werden mit CLANG kompiliert. Deshalb verwenden wir hier CLANG zur Kompilierung.

1. Skript konfigurieren
Cross_prefix_clang-Parameter hinzufügen
Öffnen Sie die Konfigurationsdatei im Stammverzeichnis von ffmpeg-4.2.2 (Hinweis: Doppelklicken Sie nicht, um sie auszuführen), suchen Sie nach CMDLINE_SET. Sie können den folgenden Code finden und dann eine Befehlszeile hinzufügen Option: cross_prefix_clang


CMDLINE_SET="
    $PATHS_LIST
    ar
    arch
    as
    assert_level
    build_suffix
    cc
    objcc
    cpu
    cross_prefix
    # 新增命令行参数
    cross_prefix_clang
    custom_allocator
    cxx
    dep_cc
    doxygen
    env
    extra_version
    .
    .
    .

2. Ändern Sie die Pfadeinstellungen des Kompilierungswerkzeugs.

Suche ar_default="${cross_prefix}${ar_default}"

ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
cxx_default="${cross_prefix}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"

将中间两行改成

ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix_clang}${cc_default}"
cxx_default="${cross_prefix_clang}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"

Erstellen Sie ein neues Kompilierungskonfigurationsskript

Erstellen Sie ein neues Shell-Skript im Stammverzeichnis und benennen Sie es: build_android_clang.sh

#!/bin/bash
set -x
# 目标Android版本
API=24
CPU=armv7-a
#so库输出目录,自己喜欢放哪里就放哪里
# OUTPUT=$(pwd)/android/$CPU
OUTPUT=./output/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/Users/kbq/Library/Android/sdk/ndk/21.0.6113669
# 编译工具链路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
# 编译环境
SYSROOT=$TOOLCHAIN/sysroot
 
function build
{
  ./configure \
  --prefix=$OUTPUT \
  --target-os=android \
  --arch=arm \
  --cpu=armv7-a \
  --enable-asm \
  --enable-neon \
  --enable-cross-compile \
  --enable-shared \
  --disable-static \
  --disable-doc \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-symver \
  --disable-ffmpeg \
  --sysroot=$SYSROOT \
  --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
  --cross-prefix-clang=$TOOLCHAIN/bin/armv7a-linux-androideabi$API- \
  --extra-cflags="-fPIC"
 
  make clean all
  # 这里是定义用几个CPU编译
  make -j12
  make install
  
}

build

Der dritte Schritt startet die Kompilierung

Öffnen Sie das cmd-Terminal und wechseln Sie mit der CD in das Verzeichnis, in dem sich FFmpeg befindet

Geben Sie ./build_android_clang.sh ein

Während Sie darauf warten, dass die Kompilierung abgeschlossen ist, erhalten Sie zwei Verzeichnisse, include und lib, im Verzeichnis ffmpeg/android/armv7-a, bei denen es sich um Header-Dateien bzw. Bibliotheksdateien handelt.

Hinweis: Wenn die Fehlermeldung zsh: Erlaubnis verweigert: ./build_android_clang.sh angezeigt wird, bedeutet dies, dass die Dateiberechtigungen falsch sind. Führen Sie chmod u+x build_android_clang.sh aus

Acho que você gosta

Origin blog.csdn.net/u010926168/article/details/124521078
Recomendado
Clasificación