热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ffmpeg学习笔记4编译libmp3lame(Win10+androidndkr22)

前言笔者尝试在win10下,编译android版本的libmp3lame,第一次尝试这样做,为后面编译ffmpeg做准备一、安装MSY

前言

笔者尝试在win10下,编译android版本的libmp3lame,第一次尝试这样做,为后面编译ffmpeg做准备


一、安装MSYS2

下载地址:MSYS2

安装完成后执行如下命令

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

 安装所需要的工具链


二、下载android NDK

下载地址:不受支持的 NDK 下载  |  Android NDK  |  Android Developers

笔者没有单独下载,因为在配置Qt for android时,已经自动下载完成了


三、下载libmp3lame源码

下载地址:LAME MP3 Encoder :: Software Downloads

下载完成后,解压到一个没有中文、空格的目录中


四、编译源码


1.编写编译脚本,如下所示

#!/bin/bash
#NDK目录
NDK=E:/software/android/commandlinetools-win-6609375_latest/ndk/22.1.7171670HOST_TAG=windows-x86_64
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
#安装目录
ANDROID_LIB_PATH="$(pwd)/install_arm64-v8a"API=24function build_android_arm
{
echo "build for android $CPU"
./configure \
--host=$HOST \
--target=android \
--enable-shared \
--disable-shared \
--enable-static \
--prefix="$ANDROID_LIB_PATH/$CPU"
make clean
make -j8
make install
echo "building for android $CPU completed"
}CPU=armv8-a
HOST=aarch64-linux-android
export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
export CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
OPTIMIZE_CFLAGS="-march=$CPU"
export CFLAGS="-Os -fpic -fdeclspec $OPTIMIZE_CFLAGS"
export CPPFLAGS="-Os -fpic -fdeclspec $OPTIMIZE_CFLAGS"
build_android_arm

 读者需要自己替换对应目录

笔者使用的api是24

将完成的脚本保存为build.sh,放到源码目录


2.编译

打开mingw64,跳转到源码目录中,运行脚本

sh build.sh

笔者大约等待了30min, 得到编译后的结果

注:

笔者发现,没有生成动态库,只生成了静态库

已编译完成的静态库


后记

笔者只编译了arm64-v8a的版本,其他版本笔者没有尝试,感兴趣的小伙伴可以自己尝试下


推荐阅读
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • QNX 微内核(procnto-instr)的监测版本内置了高级跟踪与分析工具,能够实现实时系统监控。该模块适用于单处理器及多处理器系统。 ... [详细]
  • 在使用高德地图内置导航功能时遇到AMapNavi组件出现空指针异常,经过多次排查发现问题是由于so库的兼容性引起的。本文将详细介绍如何通过调整项目配置来解决这一问题。 ... [详细]
  • 如何在Linux中实现字符设备控制
    本文详细探讨了在Linux环境下控制字符设备的方法,包括蜂鸣器和模数转换器(ADC)的实际操作案例。对于开发者来说,了解这些基础知识对于嵌入式系统的开发尤为重要。 ... [详细]
  • 本文详细解释了 Java 编程语言中 @SuppressWarnings 注解的使用方法及其意义,特别是在处理未经检查的类型转换警告时的应用。 ... [详细]
  • oracle 对硬件环境要求,Oracle 10G数据库软硬件环境的要求 ... [详细]
author-avatar
mobiledu2502875993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有