You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg 4.0 Android平台编译失败求助(Ubuntu 64位环境)

解决FFmpeg 4.0 Android编译中stdint.h缺失的问题

我看你在Ubuntu 64位环境下编译FFmpeg 4.0 for Android时踩了头文件找不到的坑,这在NDK交叉编译里挺常见的,主要是配置参数和NDK版本适配的问题,咱们一步步来修正:

先分析错误根源

你遇到的fatal error: stdint.h: No such file or directory,本质是编译器找不到Android系统的标准头文件,主要是因为这几个配置失误:

  • 目标系统设置错误:你给的--target-os=linux是针对Linux桌面的,编译Android必须改成--target-os=android,否则FFmpeg的配置脚本不会适配Android的头文件路径。
  • API等级过于老旧:android-14(对应Android 4.0)在新版NDK里已经被废弃,很多头文件和工具链都不再支持,建议至少升级到android-21(Android 5.0)。
  • 编译参数语法错误:你的-DNDEBUG-march=armv5te少了空格,变成了一个无效的宏定义,导致后续编译参数混乱,编译器无法定位正确的头文件路径。

修正后的构建脚本

我把你的脚本做了关键修改,标注了改动点,你可以直接使用:

# 升级API等级到android-21,适配新版NDK
SYSROOT=/home/lit/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/
TOOLCHAIN=/home/lit/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

# 先清理旧编译缓存(重要!避免残留配置干扰)
cd ffmpeg/ffmpeg && make clean && make distclean

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
# 修正了CFLAGS的空格错误,确保每个参数独立
--extra-cflags="-O3 -Wall -pipe -ffast-math -fstrict-aliasing -Werror=strict-aliasing -Wno-psabi -Wa,--noexecstack -DANDROID -DNDEBUG -march=armv5te -mtune=arm9tdmi -msoft-float --sysroot=$SYSROOT" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib --sysroot=$SYSROOT" \
--bindir="$HOME/bin" \
--arch=arm \
# 核心修改:target-os改为android
--target-os=android \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--cpu=armv5te \
--sysroot=$SYSROOT \
--enable-gpl \
--enable-small \
--enable-nonfree && \
# 用nproc自动获取CPU核心数,提升编译速度
PATH="$HOME/bin:$PATH" make -j$(nproc) && \
make install && \
hash -r

额外注意事项

  1. 验证头文件路径:手动检查$SYSROOT/usr/include/stdint.h是否存在,如果不存在,说明你的NDK没有这个API等级的文件,那就换个更高的API等级(比如android-23)。
  2. NDK版本适配:如果你用的是NDK r17+,arm-linux-androideabi-4.9工具链还能正常使用;如果是r21+,建议换成clang工具链(把cross-prefix改成$TOOLCHAIN/bin/arm-linux-androideabi-clang),FFmpeg 4.0对clang的兼容性也很好。
  3. 重复编译前清理:每次重新配置前一定要执行make clean和make distclean,避免旧的配置残留导致奇怪的错误。

按这个脚本运行应该能解决头文件找不到的问题,如果还有其他错误,把新的日志贴出来就行~

内容的提问来源于stack exchange,提问作者user1552075

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:17:55