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

Ubuntu16.04平台调试FFmpeg时头文件找不到问题求助

解决Ubuntu16.04下编译FFmpeg代码找不到头文件的问题

这是编译FFmpeg代码时很常见的问题——代码里明明写了头文件引用,但编译器不知道去哪里找这些文件,也没关联对应的库文件。下面分两种最常见的场景给你解决办法:

场景1:通过系统包管理器安装FFmpeg开发库

如果你是用apt安装的FFmpeg组件,首先得确认装的是开发包(只装ffmpeg命令行工具是不够的,编译代码需要开发库支持):

sudo apt-get update
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

安装完成后,别直接用gcc your_code.c编译,借助pkg-config自动获取编译参数才是省心的办法:

gcc your_test_code.c -o ffmpeg_test $(pkg-config --cflags --libs libavcodec libavformat libswscale)

其中--cflags会自动添加头文件的搜索路径,--libs会帮你链接需要的FFmpeg库,一次性解决头文件找不到和后续链接错误的问题。

场景2:手动编译源码安装的FFmpeg

如果是自己下载FFmpeg源码编译安装的(比如默认装到/usr/local,或者你指定了自定义目录),就得手动告诉编译器头文件和库的位置:

  1. 先定位头文件的位置,用这个命令查找:
find / -name avcodec.h 2>/dev/null

假设输出是/usr/local/include/libavcodec/avcodec.h,那头文件的根目录就是/usr/local/include,库文件一般在/usr/local/lib。
2. 编译时手动指定路径和链接库:

gcc your_test_code.c -o ffmpeg_test -I/usr/local/include -L/usr/local/lib -lavcodec -lavformat -lswscale
  • -I:指定头文件的搜索根目录
  • -L:指定库文件的搜索目录
  • -l:链接对应的FFmpeg库(比如-lavcodec对应libavcodec.so)

另外,运行编译后的程序如果提示找不到库,可以临时设置环境变量:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
./ffmpeg_test

想永久生效的话,把上面的export命令添加到~/.bashrc文件里,再执行source ~/.bashrc即可。

额外排查小技巧

  • 代码里的#include "libavcodec/avcodec.h"写法是对的,只要头文件根目录下存在libavcodec子目录就没问题,换成<libavcodec/avcodec.h>也可以,效果一致。
  • 确认FFmpeg安装正常:用ffmpeg -version验证,或者直接去安装目录查看头文件和库文件是否完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:05:06