怎么编译Android动态库
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇"怎么编译Android动态库"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么
千家信息网最后更新 2026年11月01日怎么编译Android动态库
这篇"怎么编译Android动态库"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么编译Android动态库"文章吧。
C++ 2.FFmpeg-4.3.2 编译 Android 动态库 (ubuntu 18.04 , r21b)
编译环境
Linux 系统:
ubuntu18.04
NDK
ndk/android-ndk-r21b
FFmpeg
ffmpeg-4.3.2
ffmpeg 下载后的文件名
ffmpeg_4.3.2.orig.tar.xz
解压方式
tar xvJf ffmpeg_4.3.2.orig.tar.xz
在 root 权限下操作
编译
4.3.2 版本不需要修改 configure 文件
编写 Android 编译脚本
新建文件 build_android.sh
#!/bin/bash# ndk路径NDK=/home/build/workspace/hqq/vision/vision-app/ndk/android-ndk-r21b# 编译工具链目录,ndk17版本以上用的是clang,以下是gccTOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64# 版本号API=21# 交叉编译树的根目录(查找相应头文件和库用)SYSROOT="${TOOLCHAIN}/sysroot"# 定义执行configure的shell方法function build_android() { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --enable-jni \ --enable-gpl \ --enable-small \ --disable-doc \ --disable-programs \ --disable-symver \ --target-os=android \ --arch=$ARCH \ --cpu=$CPU \ --cc=$CC \ --cxx=$CXX \ --enable-cross-compile \ --cross-prefix=$CROSS_COMPILE \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \ --extra-ldflags="" \ --disable-asm \ $COMMON_FF_CFG_FLAGS make clean make -j16 make install}# armOUTPUT_FOLDER=armARCH=armCPU=armv7-aTOOL_CPU_NAME=armv7aTOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androideabiOPTIMIZE_CFLAGS="-marm -march=$CPU"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# arm64,这个指令集最低支持api21OUTPUT_FOLDER=arm64-v8aARCH=aarch64CPU=armv8-aTOOL_CPU_NAME=aarch64TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=$CPU"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/aarch64-linux-android-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# x86OUTPUT_FOLDER=x86ARCH=x86CPU=x86TOOL_CPU_NAME=i686TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android# x86_64,这个指令集最低支持api21OUTPUT_FOLDER=x86_64ARCH=x86_64CPU=x86-64TOOL_CPU_NAME=x86_64TOOL_PREFIX=$TOOLCHAIN/bin/${TOOL_CPU_NAME}-linux-androidOPTIMIZE_CFLAGS="-march=$CPU -mtune=intel -msse4.2 -mpopcnt -m64"# 输出目录PREFIX=${PWD}/android/$OUTPUT_FOLDERCROSS_COMPILE=$TOOLCHAIN/bin/x86_64-linux-android-# so的输出目录, --libdir=$LIB_DIR 可以不用指定,默认会生成在$PREFIX/lib目录中#LIB_DIR="${PWD}/android/libs/$OUTPUT_FOLDER"# 编译器CC=${TOOL_PREFIX}${API}-clangCXX=${TOOL_PREFIX}${API}-clang++build_android修改文件权限
chmod 777 build_android.sh
执行 build_android.sh
可编译出 "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
假如编译失败,在打开文件粘贴时
:set ff #查看文件的格式会看到fileformat=dos 或者者 fileformat=unix
:set ff=unix #设置为unix格式
:wq #保存退出
编译后文件

取 .so 库放到 Android 项目中
github lib 库
android_ffmpeg_lib
taxiao213/android_ffmpeg_lib
以上就是关于"怎么编译Android动态库"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
编译
文件
内容
动态
目录
版本
最低
指令
文章
权限
格式
知识
篇文章
支持
输出
不用
价值
可编
大部分
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
华服互联网科技怎么样
互联网与科技发展
互联网科技与金融科技
北京互联网科技
智网互联网科技
小马过河互联网科技
广州凡科互联网科技
融贸通互联网科技
互联网高科技企业
撒么互联网科技公司
成都狮子座互联网科技
天速互联网络科技有限公司
小米互联网科技园设置
黑科技 体验场景 互联网大会
每天都有哪些好的互联网科技
深圳无忧互联网科技
亚光科技低轨卫星互联网
优雇互联网科技有限公司
互联网 科技节活动 微视频大赛
互联网扶贫科技
互联网女皇 腾讯科技
滨湖区互联网智能科技产品供应
天速互联网络科技有限公司
语蝶互联网科技有限公司
高科技互联网套路
广州三三互联网科技有限公司
优雇互联网科技有限公司
互联网科技快速发展优美句子
小牛互联网科技有限公司地址