文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Android FFMPEG 开发】Android Studio 中 配置 FFMPEG 库最小兼容版本 ( undefined reference to 'atof' )

2022-06-06 13:11

关注

文章目录FFMPEG 最小兼容版本 注意事项

FFMPEG 最小兼容版本 注意事项

1 . 最小兼容版本 : 在 Ubuntu 中编译 FFMPEG 时 , 需要指定头文件 与 NDK 的依赖库 , 这个 NDK 依赖库与头文件的 版本 , 是我们的最小兼容版本 ;


2 . 错误分析 : 下面的情况就是配置了错误的最小编译版本 , 排查了半天 , 找出了问题 ; 编译时指定了 21 版本的依赖库 , 但是 build.gradle 中指定了 15 版本的最小兼容版本 ;

  libavformat/hls.c:834: error: undefined reference to 'atof'
  libavformat/hlsproto.c:141: error: undefined reference to 'atof'
  libavcodec/v4l2_buffers.c:439: error: undefined reference to 'mmap64'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

3 . 交叉编译脚本 : 在 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 ) 博客中 , 交叉编译 FFMPEG 库时 , 使用的编译脚本如下 :

#!/bin/bash
# NDK 根目录
NDK_ROOT=/root/NDK/android-ndk-r17c
# TOOLCHAIN 变量指向 gcc g++ 等交叉编译工具所在的目录
TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
# gcc 编译器参数
FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem $NDK_ROOT/sources/android/support/include -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fPIC"
# 编译结果输出路径
PREFIX=./android/armeabi-v7a
# 执行 configure 脚本生成 Makefile 构建脚本
./configure \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS" \
--arch=arm \
--target-os=android 
# 清除之前的编译内容
make clean
# 开启新的 FFMPEG 编译
make install
————————————————
版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://hanshuliang.blog.csdn.net/article/details/104351312

4 . 库文件 : 交叉编译需要的库文件就是上述 NDK platforms 目录下的 函数库 ;


5 . --sysroot 头文件与库文件查找目录设定 : 使用

--sysroot=XX
参数设置 ;

指定本次编译的 头文件 与 库文件 , 系统会自动到 XX/usr/include 目录下查找头文件 , 到 XX/usr/lib 目录下查找库文件 ;


6 . 配置依赖库路径 : 配置 android-21 版本 的 库 和 头文件路径 , –sysroot=$NDK_ROOT/platforms/android-21/arch-arm , 其版本是 Android 21 版本的库 , 那么 Android Studio 中只能配置 21 的最小兼容版本 , 如果小于 21 就会报错 ;

在这里插入图片描述


作者:韩曙亮


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯