如何将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
相关推荐
shandianchengzi10 分钟前
【记录】Tailscale|部署 Tailscale 到 linux 主机或 Docker 上
linux·运维·docker·tailscale
John Song41 分钟前
Linux机器怎么查看进程内存占用情况
linux·运维·chrome
sichuanwuyi43 分钟前
Wydevops工具的价值分析
linux·微服务·架构·kubernetes·jenkins
持戒波罗蜜1 小时前
ubuntu20解决intel wifi 驱动问题
linux·驱动开发·嵌入式硬件·ubuntu
不做无法实现的梦~1 小时前
使用ros2来跑通mid360的驱动包
linux·嵌入式硬件·机器人·自动驾驶
点云SLAM2 小时前
C++内存泄漏检测之Windows 专用工具(CRT Debug、Dr.Memory)和Linux 专业工具(ASan 、heaptrack)
linux·c++·windows·asan·dr.memory·c++内存泄漏检测·c++内存管理
LuiChun2 小时前
Docker Compose 容器服务查询与文件查看操作指南(Windows Docker Desktop 版)【一】
linux·运维·windows·docker·容器
${王小剑}2 小时前
在离线ubuntu上布置深度学习环境
linux·运维·ubuntu
Java程序之猿3 小时前
Linux使用U盘安装centos及报错You might want to saue “/run/initramfs/rdsosreport.txt“ 处理
linux·运维·服务器
CC.GG4 小时前
【Linux】进程概念(五)(虚拟地址空间----建立宏观认知)
java·linux·运维