centos使用ndk编译fdk-acc-2.0.2

7 篇文章 0 订阅
7 篇文章 0 订阅

标题centos使用ndk编译fdk-acc

1. 软件版本

  1. ndk版本:android-ndk-r20b
    下载地址:https://developer.android.google.cn/ndk/downloads/older_releases#ndk-20b-downloads
  2. fdk-acc版本:2.0.2
    下载地址:https://sourceforge.net/projects/opencore-amr/files/fdk-aac/

2. 配置编译环境

  1. 下载autoconf
# 1. 下载安装包
wget http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz
# 2. 解压安装包
tar -xzvf autoconf-2.69.tar.gz
# 3. 进入安装目录
cd autoconf-2.69
# 4. 配置安装目录
./configure --prefix=/usr/local
# 5. 编译并安装
make && make install
# 6. 检查
autoconf --version

结果

  1. 下载automake
# 1. 下载安装包
wget http://mirrors.kernel.org/gnu/automake/automake-1.16.tar.gz
# 2. 解压安装包
tar xzvf automake-1.16.tar.gz
# 3. 进入安装目录
cd automake-1.16
# 4. 配置安装目录
./configure --prefix=/usr/local
# 5. 编译并安装
make && make install
# 6. 检查
automake --version

可能会报错:
报错
解决方法:

# 1. 编辑Makefile
vim Makefile
# 2. 设置行号
:set nu
# 3. 跳转到3694行
:3694
# 4. 3694行的末尾加上–-no-discard-stderr

可能还会报错:
报错
解决方法:

# 1. 编辑/usr/local/bin/automake
vim /usr/local/bin/automake
# 2. 跳转到76行
:set nu
:76
# 3. 将use List::Util ‘none’; 改为 use List::Util;
# 4. 再次使用automake --version

结果:
结果

  1. 修改fdk-acc的文件内容
# 1. 编辑fdk-aac-2.0.2/libSBRdec/src/lpp_tran.cpp
vim fdk-aac-2.0.2/libSBRdec/src/lpp_tran.cpp
# 2. 修改"log/log.h"为"android/log.h"
# 3. 查找android_errorWriteLog
/android_errorWriteLog
# 4. 注释android_errorWriteLog所在行

3. 编译脚本

脚本位置:fdk-acc-2.0.2/build_android.sh

# NDK所在目录
NDK_ROOT=/root/workspace/android-ndk-r20b
TOOLCHAIN="${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64" 

#重新赋值我们的CC和CXX,用我们Android自己的C编译器,而且会有32和64之分
#32位V7的我们用armv7a-linux-androideabi
#64位V8的我们用aarch64-linux-android
#32位的x64使用i686-linux-android
#64位的x86_64使用x86_64-linux-android
HOST=x86_64-linux-android
#至于这个21你可以自己选版本号,看你的目录下有哪些版本
V=21

export CC=$TOOLCHAIN/bin/$HOST$V-clang
export CXX=$TOOLCHAIN/bin/$HOST$V-clang++
echo $CC
#PREFIX定义编译输出目录
#32位V7设置为armeabi-v7a
#64位V8设置为arm64-v8a
#32为x86设置为x86
#64位x86_64设置为x86_64
PREFIX=$(pwd)/android/x86_64

#最简版本 指定编译动态链接库不编译静态库
#其它参数配置可以在lame源码根目录下执行./configure -h查看默认和支持的配置
function build_config
{
	./configure \
	--enable-static \
	--enable-shared \
	--with-pic \
	--host=$HOST \
	--prefix=$PREFIX
}

build_config
make clean
make -j8 #8是线程数 数字越大编译速度越快,前提是你电脑支持
make install

一次编译多个平台的脚本:

# NDK所在目录
NDK_ROOT=/root/workspace/android-ndk-r20b
TOOLCHAIN="${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64" 

#至于这个21你可以自己选版本号,看你的目录下有哪些版本
V=21

#指定编译动态链接库和静态库
#其它参数配置可以在lame源码根目录下执行./configure -h查看默认和支持的配置
function build_config
{
	./configure \
	--enable-static \
	--enable-shared \
	--with-pic \
	--host=$HOST \
	--prefix=$PREFIX

	make clean
	make -j8 #8是线程数 数字越大编译速度越快,前提是你电脑支持
	make install
}

#32位V7的我们用armv7a-linux-androideabi
HOST=armv7a-linux-androideabi
export CC=$TOOLCHAIN/bin/$HOST$V-clang
export CXX=$TOOLCHAIN/bin/$HOST$V-clang++
PREFIX=$(pwd)/android/armeabi-v7a
build_config

#64位V8的我们用aarch64-linux-android
# HOST=aarch64-linux-android
# export CC=$TOOLCHAIN/bin/$HOST$V-clang
# export CXX=$TOOLCHAIN/bin/$HOST$V-clang++
# PREFIX=$(pwd)/android/arm64-v8a
# build_config

#32位的x86使用i686-linux-android
# HOST=i686-linux-android
# export CC=$TOOLCHAIN/bin/$HOST$V-clang
# export CXX=$TOOLCHAIN/bin/$HOST$V-clang++
# PREFIX=$(pwd)/android/x86
# build_config

#64位的x86_64使用x86_64-linux-android
# HOST=x86_64-linux-android
# export CC=$TOOLCHAIN/bin/$HOST$V-clang
# export CXX=$TOOLCHAIN/bin/$HOST$V-clang++
# PREFIX=$(pwd)/android/x86_64
# build_config

执行脚本:

./build_android.sh

可能出现错误:
错误
解决方法:

autoreconf
./build_android.sh

4. 编译结果

结果

5. 参考

  1. CentOS7下安装yara 安装automake
  2. Unbuntu环境编译 Android平台可用ffmpeg(带三方库fdk-aac和lame)
  3. automake version mismatch | AM_INIT_AUTOMAKE | 版本不匹配

6. 项目地址

https://toscode.gitee.com/icebear221/AndroidFFmpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值