美文网首页
Mac交叉编译Android平台的faac编码库

Mac交叉编译Android平台的faac编码库

作者: orgcheng | 来源:发表于2024-08-12 23:05 被阅读0次

    一、下载faac源码

    下载页面:https://sourceforge.net/projects/faac/
    注意里面包含两个地址,faac是编码库,faad2是解码库,这里我们下载faac,最新版本是faac-1.29.9.2
    https://github.com/knik0/faac
    https://github.com/knik0/faad2

    有篇文章介绍fdk-aac性能优于ffmpeg自带的aac编码器,ffmpeg自带的aac性能优于faac,具体的原因没提,只给出这个结论。

    二、交叉编译
    faac属于Autoconf类型的项目,编译配置可以参考:将 NDK 与其他构建系统配合使用

    最终的整理编译脚本如下:

    #!/bin/bash 
    
    export NDK=/Users/chengzhen/Library/Android/sdk/ndk/25.1.8937393
    
    # Only choose one of these, depending on your build machine...
    export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
    
    # Only choose one of these, depending on your device...
    export TARGET=aarch64-linux-android
    
    export SYSROOT=$TOOLCHAIN/sysroot
    
    # Set this to your minSdkVersion.
    export API=21
    
    # Configure and build.
    export AR=$TOOLCHAIN/bin/llvm-ar
    export CC="$TOOLCHAIN/bin/clang --target=$TARGET$API"
    export AS=$CC
    export CXX="$TOOLCHAIN/bin/clang++ --target=$TARGET$API"
    export LD=$TOOLCHAIN/bin/ld
    export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
    export STRIP=$TOOLCHAIN/bin/llvm-strip
    export OBJDUMP=$TOOLCHAIN/bin/llvm-objdump
    export NM=$TOOLCHAIN/bin/llvm-nm
    export AS=$TOOLCHAIN/bin/llvm-as
    export BOLT=$TOOLCHAIN/bin/llvm-bolt
    export LIB=$TOOLCHAIN/bin/llvm-lib
    export LINK=$TOOLCHAIN/bin/llvm-link
    export LIPO=$TOOLCHAIN/bin/llvm-lipo
    export RC=$TOOLCHAIN/bin/llvm-rc
    export MT=$TOOLCHAIN/bin/llvm-modextract
    
    export CFLAGS="-isysroot=$SYSROOT -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info  -fPIC"
    
    PREFIX=$(pwd)/$TARGET
    
    ./configure \
    --prefix=$PREFIX \
    --host=$TARGET \
    --with-pic
    #--enable-shared=no
    
    make clean
    make install
    

    编译结束后,可以正常生成静态库和动态库,但是有下面的打印

    make[2]: Nothing to be done for `install-exec-am'.
    make[2]: Nothing to be done for `install-data-am'.
    

    通过Kimi搜索,发现并无影响,可以忽略

    这两句话是 Make 工具在构建过程中的输出信息,它们的含义如下:
    
    1. **`install-exec-am`**: 这个目标(target)是用于安装可执行文件的。在 Automake 生成的 Makefile 中,`am` 表示 "automatic makefile" 的意思。`install-exec` 表示安装可执行文件,而 `install-exec-am` 是 Automake 为 `install-exec` 目标自动生成的规则。如果 `make` 命令执行到这一步骤时显示 "Nothing to be done",这意味着在当前的构建环境中,没有可执行文件需要安装,可能是因为:
       - 可执行文件已经被正确安装。
       - 构建过程中没有生成任何可执行文件。
       - 可执行文件的安装规则未被正确定义。
    
    2. **`install-data-am`**: 类似于 `install-exec-am`,这个目标是用于安装数据文件的。`install-data` 表示安装数据文件,而 `install-data-am` 是 Automake 为 `install-data` 目标自动生成的规则。显示 "Nothing to be done" 可能表示:
       - 数据文件已经被正确安装。
       - 构建过程中没有生成需要安装的数据文件。
       - 数据文件的安装规则未被正确定义。
    
    在大多数情况下,这两句话仅仅是说明在当前的构建步骤中没有需要执行的动作,并不一定表示存在问题。如果这是意料之中的(例如,你正在构建一个不包含可执行文件或数据文件的项目),则可以忽略这些信息。
    
    如果这些信息出现在错误或警告的上下文中,或者你确实期望有文件被安装,那么你可能需要检查以下几点:
    - 确认 Makefile 或相关构建脚本中的规则是否正确定义。
    - 检查是否存在需要安装的可执行文件或数据文件。
    - 如果你正在尝试构建的项目有特定的构建依赖或顺序,请确保按照正确的顺序执行构建步骤。
    
    如果你需要进一步的帮助来解决这个问题,你可以提供更多的上下文或 Makefile 的相关部分,以便更准确地诊断问题所在。
    
    

    相关文章

      网友评论

          本文标题:Mac交叉编译Android平台的faac编码库

          本文链接:https://www.haomeiwen.com/subject/rivdkjtx.html