如何将x264 x265的动态库编译入Linux系统中的FFmpeg源码 - x264库编译

0 前言

在Linux操作系统中实现x264库编译、x265库编译,并将他们编译入FFmpeg中。作为一个工作记录,方便后面操作。

Ubuntu 系统编译 x264 库完整步骤

你需要在 Ubuntu 系统中编译 x264 库,以下是分步详细操作,涵盖依赖安装、源码获取、配置编译及安装验证的全流程:

一、安装编译依赖工具

首先需要安装编译 x264 所需的基础工具链和依赖库,打开终端执行以下命令:

bash 复制代码
# 更新软件源索引(可选,确保获取最新依赖版本)
sudo apt update

# 安装编译必备工具(gcc、g++、make等)及依赖
sudo apt install -y build-essential git pkg-config
  • build-essential:包含 gcc、g++、make 等核心编译工具,是 Linux 下编译源码的基础
  • git:用于克隆 x264 官方源码仓库
  • pkg-config:用于编译时查找依赖库路径,辅助配置 x264 编译参数

二、获取 x264 源码

x264 的官方源码托管在 VideoLAN 仓库,通过 git 克隆获取最新源码:

bash 复制代码
# 克隆 x264 源码仓库(默认克隆到当前目录的 x264 文件夹)
git clone https://git.videolan.org/git/x264.git

# 进入 x264 源码目录(后续操作均在此目录下执行)
cd x264

三、配置 x264 编译参数(核心步骤)

使用源码目录下的 configure 脚本配置编译选项,这里提供两种常用配置方案,你可根据需求选择:

方案1:通用编译(生成动态库+静态库,支持系统全局调用)

适合大多数场景,编译后生成 .so 动态库和 .a 静态库,并安装到系统默认路径(/usr/local/):

bash 复制代码
./configure --enable-shared --enable-static --prefix=/usr/local

也可以先生成在本源码目录./out中

bash 复制代码
./configure --enable-shared --enable-static --prefix=./out

参数说明:

  • --enable-shared:启用动态库(.so)编译(可选,若仅需静态库可移除该参数)
  • --enable-static:启用静态库(.a)编译(可选,若仅需动态库可移除该参数)
  • --prefix=/usr/local:指定安装路径(默认也是此路径,可自定义为其他路径如 ~/local/x264

方案2:高性能编译(针对本地CPU优化,推荐生产环境)

额外添加 CPU 优化参数,充分利用本地硬件性能,编译出更高效的库:

bash 复制代码
./configure --enable-shared --enable-static --prefix=/usr/local --enable-pic --cpu=native

也可以先生成在本源码目录./out中

bash 复制代码
./configure --enable-shared --enable-static --prefix=./out --enable-pic --cpu=native

额外参数说明:

  • --enable-pic:生成位置无关代码,便于后续将 x264 库链接到其他动态库中
  • --cpu=native:自动检测本地 CPU 型号,启用针对性优化(仅在当前机器使用时推荐)

配置成功标识

终端输出末尾会显示 x264 配置信息(如支持的功能、安装路径、库类型等),无报错即配置成功。

四、编译 x264 源码

使用 make 命令进行编译,可通过 -j 参数指定编译线程数(提升编译速度,建议设为 CPU 核心数,如 4 核则 -j4):

bash 复制代码
# 多线程编译(推荐,替换 4 为你的 CPU 核心数,可通过 nproc 命令查看核心数)
make -j$(nproc)

编译过程中终端会输出编译日志,无报错(无 error 提示)即编译成功,此时源码目录下会生成对应的库文件。

五、安装 x264 库

编译完成后,将库文件、头文件等安装到之前 configure 指定的 --prefix 路径下,需要使用 sudo 提升权限(若安装到用户目录可无需 sudo):

bash 复制代码
sudo make install

安装成功后,系统会自动将:

  • 头文件安装到 /usr/local/include/x264/
  • 库文件安装到 /usr/local/lib/
  • 配置文件安装到 /usr/local/lib/pkgconfig/

六、配置动态库链接路径(解决运行时库找不到问题)

编译安装后,系统默认可能无法识别 x264 动态库的路径,需要手动配置:

bash 复制代码
# 1. 将 x264 库路径写入系统动态库配置文件
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/x264.conf

# 2. 更新动态库缓存,使配置生效
sudo ldconfig

七、验证 x264 库安装成功

通过以下两种方式验证安装是否有效:

方式1:查看 x264 版本

bash 复制代码
# 查看 x264 工具版本(同时验证库可用)
x264 --version

若终端输出 x264 的版本信息、编译参数等,说明安装成功。

方式2:通过 pkg-config 验证库配置

bash 复制代码
# 查看 x264 库的编译链接信息
pkg-config --libs --cflags x264

若终端输出 x264 的头文件路径(-I 参数)和库文件路径(-L 参数及 -lx264),说明库配置正常,可用于后续其他项目的编译链接。

补充说明

  1. 若需卸载 x264 库:进入源码目录执行 sudo make uninstall 即可
  2. 若编译时需要关闭某些功能(如禁用汇编优化):可在 configure 时添加 --disable-asm 参数
  3. 若自定义安装路径(如 ~/local/x264):需在验证时指定路径,或添加环境变量 PKG_CONFIG_PATH=~/local/x264/lib/pkgconfig
相关推荐
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥5 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿5 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘5 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6486 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满6 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠7 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio7 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice7 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Harvey9037 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s