我正在构建ffmpeg,并且几个文件出现以下错误。我不是专门用独立旗帜建立的,所以看不到为什么会这样。这到底是什么意思?有问题吗,还是可忽略的警告?如果有问题,是否有人知道如何解决?
Building for macOS, but linking in object file (~/Git/FFmpeg/FFmpegXcode/lib/libavutil.a(imgutils.o)) built for free standing
答案 0 :(得分:3)
问题出在FFmpeg版本中的.asm文件。
Apple Clang在目标平台,系统版本和SDK版本的目标文件中嵌入了特殊的加载命令,该命令来自-target
或-mmacosx-version-min
或类似的命令行参数。
链接器然后在所有链接的目标文件中检查此类加载命令,并警告它找不到该命令或检测到不兼容。
大多数其他编译器都不知道该加载命令,也无法将其输出到目标文件中。至少在YASM(在本期中对此有所体现),in D and Go compilers,in Crystal中发现了问题。
不幸的是,我找不到解决方法来为FFmpeg中的asm源构建良好的对象或禁用该警告。我已经创建了an issue for YASM,但这是一个很长的路要走-首先,您需要在YASM中使用此功能,然后需要一种将所需参数传递给asm源的FFmpeg构建的方法。
答案 1 :(得分:2)
我知道这个问题是针对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只是为了编译一个库?