Linux编译FFmpeg-4.1.3源码包缺少库

本文详细记录了在Ubuntu16.04系统上从源码编译FFmpeg的过程,包括遇到的错误及解决方法,如缺失libass、libtheora等库的解决方案,以及如何正确编译和配置x265。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统为Ubuntu16.04
在FFmpeg源码包中编译,执行下面命令报错,缺少各种库

./configure --pkg-config-flags="--static" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree

1、ERROR: libass not found using pkg-config

解决:sudo apt-get install libass-dev

2、ERROR: libtheora not found

解决:sudo apt-get install libtheora-dev

3、ERROR: vorbis not found using pkg-config

sudo apt-get install libvorbis-dev

4、ERROR: libvpx decoder version must be >=1.4.0

sudo apt-get install libvpx-dev

5、ERROR: x265 not found using pkg-config

解决方法:

sudo apt-get install cmake mercurial
hg clone https://bitbucket.org/multicoreware/x265
cd x265/build/linux
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
#如果默认路径安装使用:cmake -G "Unix Makefiles" -DENABLE_SHARED:bool=off ../../source
make
sudo make install
X265编译完后在终端执行命令:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

在这里插入图片描述
编译完成
执行ls /usr/local/lib/pkgconfig/,看是否有x265.pc文件

再重新编译,还是报错ERROR: x265 not found using pkg-config

解决方法:
1、sudo vi /usr/local/lib/pkgconfig/x265.pc
2、在 Libs.private 参数那行后面加上 -lpthread 
3、保存退出重新编译

在这里插入图片描述
重新执行命令编译:

./configure --pkg-config-flags="--static" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree

在这里插入图片描述
最后执行sudo make install,等待编译完成。
在这里插入图片描述
至此,FFmpeg编译完成,下面测试一下FFmpeg库是否成功安装!

<think>好的,我现在需要帮助用户解决他们在运行`config_for_ssd20x.sh`脚本时遇到的问题。用户提供的错误信息包括多个路径找不到、`cflags`和`ldflags`设置失败,以及C编译器测试失败。我需要逐步分析可能的原因并提供解决方案。 首先,用户执行的是`sudo sh config_for_ssd20x.sh`,这里可能涉及权限问题。使用`sudo`可能会导致环境变量不同,比如`$PATH`中没有包含交叉编译工具链的路径。但用户之前的命令显示他们使用的是`arm-linux-gnueabihf-`前缀的工具链,所以可能已经正确安装了交叉编译器,但需要确认是否在sudo环境下也能访问。 接下来,错误信息中提到`alkaid_path = ./../..`,这可能是一个变量设置,指向某个依赖的路径。但随后的几行显示`cflags`和`ldflags`添加的路径不存在,例如`./../../project/release/include`和`./../3rdparty/include`。这说明脚本中设置的相对路径可能不正确,或者用户当前的工作目录不在预期的位置。用户当前位于`~/Desktop/ffmpeg-master/ffmpeg-4.1.3/`,而脚本可能预期在另一个目录下运行,比如项目根目录。需要检查脚本中的路径是否正确,或者用户是否在正确的目录下执行脚本。 另一个问题是`fatal: not a git repository`,这可能是因为脚本尝试获取Git版本信息,但当前目录不是一个Git仓。不过这可能只是警告,不影响主要编译过程,除非脚本依赖Git提交哈希来设置版本信息。用户看到的`FFMPEG_LIBRARY_VERSION`设置失败可能与此有关,但主要问题还是路径和编译器问题。 C编译器测试失败,提示`arm-linux-gnueabihf-gcc is unable to create an executable file`。可能的原因包括: 1. 交叉编译器未正确安装或未在sudo的环境变量中。 2. 编译器路径未正确添加到`$PATH`中,特别是在使用sudo时。 3. 缺少依赖或头文件,导致链接失败。 4. 脚本中设置的`cflags`或`ldflags`路径错误,导致编译器找不到必要的文件。 针对这些可能,我需要建议用户: 1. 检查交叉编译器是否安装正确,尝试直接运行`arm-linux-gnueabihf-gcc --version`,如果有问题,可能需要安装或修复工具链。 2. 检查脚本中的路径设置,确认所有`-I`和`-L`指向的目录确实存在,并且相对于脚本执行的位置正确。 3. 考虑不使用sudo执行脚本,除非必要,因为权限问题可能导致环境变量不同。 4. 查看`ffbuild/config.log`文件,寻找更详细的错误信息,帮助定位具体问题。 此外,用户可能在克隆FFmpeg源码时没有使用Git,或者目录结构不符合脚本预期。可能需要确认项目目录结构,确保所有依赖的第三方和头文件位于正确的位置。 总结来说,主要问题在于路径设置错误和交叉编译器配置问题。需要用户逐步验证路径是否存在,检查编译器是否可用,并确保所有依赖项正确安装。</think>你遇到的错误是 **FFmpeg交叉编译配置过程中路径设置错误和交叉编译器环境问题**。以下是关键问题分析和解决方案: --- ### **问题原因分析** 1. **路径缺失错误** - 错误提示 `cflags+= -I./../../project/release/include: not found` 表明脚本中设置的依赖头文件路径(如`project/release/include`)实际不存在。 - 可能原因:项目目录结构不符合脚本预期,或依赖的第三方未正确放置。 2. **Git仓缺失警告** - `fatal: not a git repository` 脚本尝试读取Git版本信息,但当前目录不是Git仓(可能从源码包直接解压而非克隆仓)。 3. **交叉编译器配置失败** - `arm-linux-gnueabihf-gcc is unable to create an executable file` 交叉编译器未正确安装、环境变量未配置,或依赖的缺失。 --- ### **解决方案步骤** #### **1. 检查依赖路径** - 确认脚本中以下路径是否存在: ```bash ./../../project/release/include # 头文件路径 ./../3rdparty/include # 第三方头文件 ./../../project/release/nvr/i2m/... # 动态路径 ``` - **若路径不存在**:需按项目要求补齐依赖,或修改脚本中的路径指向正确位置。 #### **2. 验证交叉编译器** - 直接运行命令测试编译器: ```bash arm-linux-gnueabihf-gcc --version ``` - **若提示命令未找到**: - 检查交叉编译工具链是否安装(如`gcc-arm-linux-gnueabihf`)。 - 确认工具链路径已加入`PATH`环境变量(可通过 `echo $PATH` 查看)。 #### **3. 修复脚本路径问题** - 脚本中的 `alkaid_path = ./../..` 可能指向错误,尝试修改为绝对路径,例如: ```bash alkaid_path=/home/rpdzkj/Desktop/ffmpeg-master # 根据实际路径调整 ``` - 检查所有 `-I`(头文件路径)和 `-L`(路径)是否有效。 #### **4. 避免使用`sudo`执行脚本** - `sudo`可能导致环境变量(如`PATH`)与当前用户不同,建议: ```bash # 先修复权限问题(如有必要) chmod +x config_for_ssd20x.sh # 直接以当前用户运行 ./config_for_ssd20x.sh ``` #### **5. 查看详细错误日志** - 根据提示检查 `ffbuild/config.log`,定位具体报错位置。例如: ```bash cat ffbuild/config.log | grep -i error ``` --- ### **补充建议** - **依赖完整性**:确保 `3rdparty` 目录中的文件(如 `.so` 或 `.a`)已正确放置。 - **脚本调试**:在脚本开头添加 `set -x` 开启调试模式,观察执行流程: ```bash #!/bin/sh set -x # 打印每条执行的命令 alkaid_path=./../.. ... ``` --- ### **总结** 根本问题在于 **脚本路径配置错误** 和 **交叉编译器环境未正确配置**。按上述步骤修复路径、验证编译器后,重新运行脚本即可。若仍失败,请提供 `ffbuild/config.log` 中的关键错误片段以进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值