为macOS构建,但链接为独立建立的目标文件

我正在构建ffmpeg,并且几个文件出现以下错误。我不是专门用独立旗帜建立的,所以看不到为什么会这样。这到底是什么意思?有问题吗,还是可忽略的警告?如果有问题,是否有人知道如何解决?

Building for macOS,but linking in object file (~/Git/FFmpeg/FFmpegXcode/lib/libavutil.a(imgutils.o)) built for free standing
jio123456 回答:为macOS构建,但链接为独立建立的目标文件

问题出在FFmpeg版本中的.asm文件。

Apple Clang在目标平台,系统版本和SDK版本的目标文件中嵌入了特殊的加载命令,该命令来自-target-mmacosx-version-min或类似的命令行参数。

链接器然后在所有链接的目标文件中检查此类加载命令,并警告它找不到该命令或检测到不兼容。

大多数其他编译器都不知道该加载命令,也无法将其输出到目标文件中。至少在YASM(在本期中对此有所体现),in D and Go compilersin Crystal中发现了问题。

不幸的是,我找不到解决方法来为FFmpeg中的asm源构建良好的对象或禁用该警告。我已经创建了an issue for YASM,但这是一个很长的路要走-首先,您需要在YASM中使用此功能,然后需要一种将所需参数传递给asm源的FFmpeg构建的方法。

,

我知道这个问题是针对macOS的,但是在构建模拟器(英特尔架构,而不是ARM)时,我也针对iOS和tvOS得到了这个问题。尽管https://stackoverflow.com/a/59103419/1777839可以肯定地解释了为什么会发生这种情况,但它没有提供“解决方案”。

这不是一个完美的解决方案,需要更多的解决方法,但是它帮助了我,因此我想与他人分享,以防其他任何人遇到与我同样的问题。

在为iOS或tvOS模拟器构建FFmpeg时,如果将--disable-asm标志传递给configure,则链接器错误将消失。是的,它禁用了针对仿真器的FFmpeg的优化装配件,但是由于它仍然适用于ARM设备,因此我将其写为可接受的解决方案。虽然为物理设备和仿真器使用相同的FFmpeg构建选项会很好,但是至少可以使它再次正常工作。

另一个可行的选择是使用Xcode 10构建FFmpeg,但是您不能使用iOS / tvOS 13 SDK(尽管我认为这并不重要)。此外,还有谁想处理Xcode只是为了编译一个库?

本文链接:https://www.f2er.com/3126279.html

大家都在问