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

Xcode编译报错:Library not found for -lavutil.57.58.100 求助

解决Xcode中FFmpeg链接错误:Library not found for -lavutil.57.58.100

错误核心原因

你添加的库文件是libavutil.57.28.100.dylib,但链接器尝试查找的是libavutil.57.58.100,版本号完全不匹配,这是导致报错的直接原因。

可能的深层诱因及对应解决方案

1. 头文件与库版本不匹配

  • 问题:项目中引入的FFmpeg头文件(如avutil.h)对应的是57.58.100版本,但你链接的是57.28.100版本的库,链接器会根据头文件中的版本宏定义去查找对应版本的库。
  • 解决:
    • 打开项目中的avutil.h,查找以下宏定义:
      #define AVUTIL_VERSION_MAJOR 57
      #define AVUTIL_VERSION_MINOR 58
      #define AVUTIL_VERSION_MICRO 100
      
      如果确实是57.58.100,你需要:
      • 要么安装对应版本的FFmpeg库(通过Homebrew安装匹配版本,或从FFmpeg官网下载对应版本编译);
      • 要么替换项目中的FFmpeg头文件为57.28.100版本的对应文件。

2. Homebrew多版本FFmpeg混淆

  • 问题:你的系统中可能安装了多个版本的FFmpeg,项目间接依赖了高版本的libavutil,导致链接器错误地查找57.58.100版本。
  • 解决:
    • 用以下命令查看已安装的FFmpeg版本:
      brew info ffmpeg
      
    • 如果存在多个版本,切换到你需要的5.1-with-options_2版本:
      brew switch ffmpeg 5.1-with-options_2
      
    • 若该版本不存在,重新安装指定版本的FFmpeg(如果Homebrew有该版本的Formula)。

3. Xcode链接器参数手动指定错误

  • 问题:你可能在Xcode的Build Settings -> Other Linker Flags中手动添加了-lavutil.57.58.100,导致链接器忽略你在General中添加的库,直接查找指定版本。
  • 解决:
    • 打开Xcode项目的Build Settings,搜索Other Linker Flags;
    • 删除其中的-lavutil.57.58.100,替换为-lavutil(让链接器自动匹配你添加的库版本),或者明确写-lavutil.57.28.100。

4. 架构兼容补充(针对你之前的推测)

虽然当前错误不是架构问题,但如果你的项目需要编译为universal(x64+arm64)二进制:

  • 你当前的库仅为arm64架构,无法满足universal编译需求;
  • 解决:重新编译FFmpeg为universal架构,或使用Homebrew编译时添加参数:
    brew install ffmpeg --build-from-source --universal
    

后续验证步骤

  • 确认库路径配置正确:检查Xcode的Build Settings -> Library Search Paths是否包含/opt/homebrew/Cellar/ffmpeg/5.1-with-options_2/lib,且路径无拼写错误;
  • 检查库依赖:用以下命令验证libavutil的依赖是否完整(当前错误不涉及依赖,但后续运行时可能需要):
    otool -L /opt/homebrew/Cellar/ffmpeg/5.1-with-options_2/lib/libavutil.57.28.100.dylib
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48