Xcode 12: 如何 link 针对独立构建的目标文件
Xcode 12: how to link against object files built for free standing
问题是关于将 x86_64 macOS 可执行文件静态链接到 libavcodec、libavdevice 等,它们有一些针对独立构建的目标文件,因为它们使用 YASM,而 YASM 无法将 macOS“标签”嵌入二进制文件(有关该问题的详细信息,请参阅 )。
在 Xcode 11.6 下一切正常 - 此处显示以下消息,但它们是警告。
随着 Xcode 12 更新,它们变成了一个错误。
如何让他们再次发出警告?我在 ld 手册页中找不到任何相关内容。
ld: in ffmpeg/lib/libavcodec.a(aacencdsp.o), building for macOS, but linking in object file built for free standing, for architecture x86_64
我找不到将错误恢复为警告的选项。 Apple 现在已经针对 XCode 的几个版本就此问题向我们发出警告,但警告已变为错误。
直到 NASM 被修改,或者我们可以使用其他一些汇编器,允许我构建和 link 针对我的应用程序中的 libav 库的唯一选项是在编译 ffmpeg 时禁用汇编.
./configure --disable-asm
这适用于我的情况,因为 non-assembly 代码路径的性能在我的桌面创作工具中是可以接受的。 server-based 渲染器仍然使用汇编代码路径,因为它是基于 linux 的。
您可能必须配置您在 ffmpeg 构建中包含的任何库,以同时禁用程序集。
再一次,对于我的案例来说,这是一个可以接受的解决方案,因为 non-assembly 代码路径对于我的用例来说足够快。
问题是关于将 x86_64 macOS 可执行文件静态链接到 libavcodec、libavdevice 等,它们有一些针对独立构建的目标文件,因为它们使用 YASM,而 YASM 无法将 macOS“标签”嵌入二进制文件(有关该问题的详细信息,请参阅
在 Xcode 11.6 下一切正常 - 此处显示以下消息,但它们是警告。 随着 Xcode 12 更新,它们变成了一个错误。 如何让他们再次发出警告?我在 ld 手册页中找不到任何相关内容。
ld: in ffmpeg/lib/libavcodec.a(aacencdsp.o), building for macOS, but linking in object file built for free standing, for architecture x86_64
我找不到将错误恢复为警告的选项。 Apple 现在已经针对 XCode 的几个版本就此问题向我们发出警告,但警告已变为错误。
直到 NASM 被修改,或者我们可以使用其他一些汇编器,允许我构建和 link 针对我的应用程序中的 libav 库的唯一选项是在编译 ffmpeg 时禁用汇编.
./configure --disable-asm
这适用于我的情况,因为 non-assembly 代码路径的性能在我的桌面创作工具中是可以接受的。 server-based 渲染器仍然使用汇编代码路径,因为它是基于 linux 的。
您可能必须配置您在 ffmpeg 构建中包含的任何库,以同时禁用程序集。
再一次,对于我的案例来说,这是一个可以接受的解决方案,因为 non-assembly 代码路径对于我的用例来说足够快。