RPS*_*PSM 8 xcode ffmpeg llvm clang
我正在构建 ffmpeg 并且我收到几个文件的以下错误。我不是专门用独立的旗帜建造的,所以不明白为什么会这样。它实际上是什么意思?它有问题,还是一个可忽略的警告?如果有问题,有人知道如何解决吗?
Building for macOS, but linking in object file (~/Git/FFmpeg/FFmpegXcode/lib/libavutil.a(imgutils.o)) built for free standing
Run Code Online (Sandbox Code Playgroud)
Joh*_*ton 15
问题在于 FFmpeg 构建中的 .asm 文件。
苹果锵与目标平台,系统版本和SDK版本,它从拍摄对象文件嵌入一个特殊的加载命令-target或-mmacosx-version-min或一些类似的命令行参数。
链接器然后检查所有被链接的目标文件中的此类加载命令,并在找不到此类命令或检测到不兼容时发出警告。
大多数其他编译器不知道该加载命令,也无法将其输出到目标文件中。至少在 YASM(它体现在本期)、D 和 Go 编译器、Crystal 中都发现了问题。
不幸的是,我找不到在 FFmpeg 中为 asm 源构建好的对象或禁用该警告的解决方法。我已经为 YASM创建了一个问题,但这是一个长镜头 - 首先您需要在 YASM 中使用此功能,然后您需要一种方法将所需的参数传递给 asm 源的 FFmpeg 构建。
更新
从 Xcode 12 开始,它成了一个问题,因为这个警告变成了一个错误,似乎没有办法禁用或忽略它。但看起来我已经设法使用tmm1建议的方法解决了这个问题。不幸的是,在当前阶段,它需要大量的手动工作。
yasm并在输出对象文件中添加了填充。(用于构建调用./autogen.sh和make)macho_edit并添加了一种使用命令行调用附加所需加载命令的方法。(用于构建调用xcodebuild build -configuration Release -project macho_edit.xcodeproj -target macho_edit)yasm然后macho_edit使用必需的参数自定义构建(您可以设置要在此脚本中支持的 macos 版本和 sdk 版本)。ffmpeg使用这个包装器进行构建,我复制macos_yasm_wrap.sh到ffmpeg目录并添加--x86asmexe=`pwd`/macos_yasm_wrap.sh要./configure调用的参数。这似乎有效。正确的做法是将正确的命令行参数添加到yasm(如 Clang 支持的那些)并首先生成正确的加载命令。但我现在没有时间这样做:(
| 归档时间: |
|
| 查看次数: |
4565 次 |
| 最近记录: |