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

依赖FFmpeg的Rust应用交叉编译失败求助

解决Linux交叉编译Rust+ffmpeg-next到Windows的libavutil依赖问题

错误原因

交叉编译时,ffmpeg-sys-next通过pkg-config寻找Windows版本的libavutil库,但cross的编译容器中默认没有安装对应架构的FFmpeg,也未配置pkg-config路径,导致找不到libavutil.pc文件。

解决方案

方案1:让ffmpeg-sys-next自动编译FFmpeg(最便捷)

修改Cargo.toml,给ffmpeg-next添加build特性,依赖会自动下载并编译适配目标平台的FFmpeg,无需系统预安装:

[dependencies]
ffmpeg-next = { version = "0.40", features = ["build"] }

直接重新执行cross编译命令即可,编译过程会自动处理FFmpeg的构建。

方案2:指定预编译的Windows版FFmpeg路径

  1. 提前编译或下载针对x86_64-pc-windows-gnu架构的FFmpeg库,确保包含libavutil.pc等pkg-config配置文件。
  2. 通过环境变量或Cross.toml配置pkg-config路径:
    • 临时环境变量方式:
      export PKG_CONFIG_ALLOW_CROSS=1
      export PKG_CONFIG_PATH=/本地Windows版FFmpeg路径/lib/pkgconfig
      cross build --target x86_64-pc-windows-gnu
      
    • 持久化配置(Cross.toml):
      [target.x86_64-pc-windows-gnu]
      env = {
        PKG_CONFIG_ALLOW_CROSS = "1",
        PKG_CONFIG_PATH = "/容器内映射的FFmpeg路径/lib/pkgconfig"
      }
      [target.x86_64-pc-windows-gnu.x86_64-unknown-linux-gnu]
      volumes = ["/本地FFmpeg路径:/容器内映射的FFmpeg路径"]
      

方案3:自定义cross编译容器,安装Windows版FFmpeg

  1. 创建Cross.toml指定自定义Dockerfile:
    [target.x86_64-pc-windows-gnu]
    dockerfile = "Dockerfile.windows-cross"
    
  2. 编写Dockerfile.windows-cross,基于cross基础镜像安装mingw版本的FFmpeg:
    FROM ghcr.io/cross-rs/x86_64-pc-windows-gnu:edge
    RUN apt-get update && apt-get install -y --no-install-recommends mingw-w64-x86-64-ffmpeg
    
  3. 重新执行cross编译,容器会自动安装所需的Windows版FFmpeg库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:31:11