【问题标题】:Xcode 12: how to link against object files built for free standingXcode 12:如何链接为独立构建的目标文件
【发布时间】:2020-09-19 16:07:25
【问题描述】:

问题是关于将 x86_64 macOS 可执行文件静态链接到 libavcodec、libavdevice 等,这些文件有一些针对独立构建的目标文件,因为它们使用无法在二进制文件中嵌入 macOS“标签”的 YASM(请参阅@987654321 @了解有关该问题的详细信息)。

在 Xcode 11.6 下一切正常 - 以下消息在这里,但它们是警告。 随着 Xcode 12 的更新,它们变成了一个错误。 如何让他们再次警告?我在 ld 手册页中找不到任何相关内容。

ld:在 ffmpeg/lib/libavcodec.a(aacencdsp.o) 中,为 macOS 构建,但在为独立构建的目标文件中链接,用于架构 x86_64

【问题讨论】:

  • 您是从源代码构建 libav 库还是使用 brew 或其他包管理器安装它们?
  • 从源代码构建。
  • 我已将手动解决方法描述添加到 my answer

标签: macos ffmpeg linker linker-errors linker-warning


【解决方案1】:

我没有找到将错误恢复为警告的选项。 Apple 已经在 XCode 的几个版本中就这个问题向我们发出警告,警告已经变成了错误。

在修改 NASM,或者我们可以使用其他汇编程序之前,允许我在我的应用程序中构建和链接 libav 库的唯一选项是在编译 ffmpeg 时禁用汇编。

./configure --disable-asm

这适用于我的情况,因为非汇编代码路径的性能在我的桌面创作工具中是可以接受的。基于服务器的渲染器仍然使用汇编代码路径,因为它是基于 linux 的。

您可能必须配置包含在您的 ffmpeg 构建中的任何库以禁用程序集。

再一次,这对于我的案例来说是一个可以接受的解决方案,因为非汇编代码路径对于我的用例来说已经足够快了。

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 2021-01-08
    • 2022-07-02
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多