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

2023-12-30

我正在构建 ffmpeg,并且多个文件出现以下错误。我不是专门用独立式旗帜构建的,所以不明白为什么会发生这种情况。它到底意味着什么?它有问题吗,还是一个可忽略的警告?如果出现问题,有人知道如何解决吗?

Building for macOS, but linking in object file (~/Git/FFmpeg/FFmpegXcode/lib/libavutil.a(imgutils.o)) built for free standing

问题出在 FFmpeg 构建中的 .asm 文件。

Apple Clang 在目标文件中嵌入了一个特殊的加载命令,其中包含目标平台、系统版本和 SDK 版本-target or -mmacosx-version-min或一些类似的命令行参数。

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

大多数其他编译器不知道该加载命令,也无法将其输出到目标文件中。至少在 YASM 中发现了问题(在本期中有所体现),在 D 和 Go 编译器中 https://github.com/golang/go/issues/33214#issuecomment-541353859, 水晶中 https://github.com/crystal-lang/crystal/issues/7884.

不幸的是,我找不到解决方法来为 FFmpeg 中的 asm 源构建良好的对象或禁用该警告。我已经创建了YASM 的一个问题 https://github.com/yasm/yasm/issues/141但这是一个漫长的过程 - 首先您需要在 YASM 中使用此功能,然后您需要一种方法将所需的参数传递给 FFmpeg 构建 asm 源。

UPDATE

从 Xcode 12 开始,它成为一个问题,因为这个警告变成了一个错误,而且似乎没有办法禁用或忽略它。但看起来我已经成功地使用建议的方法解决了这个问题tmm1 https://stackoverflow.com/users/332798/tmm1。不幸的是,在现阶段,它需要大量的手动工作。

  1. I've forked yasm https://github.com/desktop-app/yasm/tree/macos_padding and 添加填充 https://github.com/desktop-app/yasm/commit/e129811f26db5db8eaa89264b6894850d9c25a76到缺少加载命令的输出目标文件。 (用于建立呼叫./autogen.sh and make)
  2. I've forked macho_edit https://github.com/desktop-app/macho_edit and 添加了一种通过命令行调用附加所需加载命令的方法 https://github.com/desktop-app/macho_edit/commit/2e22c7cc5040f6e73dfb5302f0749d718a438642。 (用于建立呼叫xcodebuild build -configuration Release -project macho_edit.xcodeproj -target macho_edit)
  3. I've 创建了一个 shell 脚本 https://github.com/desktop-app/patches/blob/master/macos_yasm_wrap.sh包装了定制的调用yasm然后定制macho_edit带有必需的参数(您可以设置要在此脚本中支持的 macos 版本和 sdk 版本)。
  4. 建造ffmpeg用这个包装我复制macos_yasm_wrap.sh to the ffmpeg目录并添加--x86asmexe=`pwd`/macos_yasm_wrap.sh论证./configure call.

这似乎有效。正确的方法是将正确的命令行参数添加到yasm(就像 Clang 支持的那样)并首先生成正确的加载命令。但我现在没有时间这样做:(

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 macOS 构建,但链接到为独立构建的目标文件中 的相关文章

随机推荐

  • 重新排序时 UITableViewCell 的子视图不可见

    当我重新排序 UITableViewCells 时 拖动时单元格的子视图不可见 无论我在 UITableViewCell 子类中还是在 Storyboard 中以编程方式添加子视图 我总是得到相同的结果 拖动时是否有可能看到带有子视图的真实
  • JMeter分布式测试和命令行参数

    我一直在使用 JMeter 参数来指定负载测试的测试属性 例如 testduration rampup period 等 我在 shell 脚本中指定这些参数 它看起来像这样 JMETER PATH home
  • VB.NET:VB.NET 中的静态 T (C#) 是什么?

    考虑 public static T GetValueOrDefault
  • 程序集/Nasm - 分段错误(核心转储)错误

    我对 NASM 很陌生 我正在尝试执行我找到的在线 MASM 示例 但转换为 NASM 很痛苦 它正确编译并生成输出文件 但是当我尝试运行它时 它给出了分段错误 核心转储错误 我不知道它是什么 操作系统是Ubuntu 尝试在以下环境下执行编
  • 通配某些 YYYYMMDD 日期

    我正在尝试向我的 perl 脚本提供几个文件按日历周 它只是获取从 bash 获取的所有文件 foreach my input ARGV 命名约定如下 FILE XYZ 20140908 0000 000XYZ 这个月的第一周没问题 FIL
  • 无法导出 Kendo Grid 中的隐藏列

    我想隐藏 Kendo Grid 上的一些列并将它们导出到 Excel 作为可见列 然而 使用隐藏 真实 or 可见 假 没有任何意义 并且这些字段不会被导出 解决方法this http www telerik com forums exce
  • Autofac 具有同一接口的多个实现

    我正在使用 Autofac 并且希望有一个接口的多个实现 如何配置 Autofac 以便根据当前类型解决依赖关系 更具体地说 我有一个接口和多个应该链接在一起的实现 让我解释一下 虚构的类 public interface IMessage
  • 在postgresql中创建表空间

    我正在尝试在 postgres 中创建表空间 但遇到所有权问题 我正在使用的命令是 CREATE TABLESPACE magdat OWNER maggie LOCATION home john BSTablespace 我收到错误 ER
  • .NET 4 中是否允许通用运算符重载?

    我假设 否 但我在谷歌上找不到确凿的证据来支持这个假设 使用关键字 vb net 通用运算符重载 仅产生 1 个结果 删除 重载 会产生更多结果 但没有直接说明该问题 我的想法是给定一个抽象类 如果能够实现派生类可以使用的通用运算符重载 在
  • 锁损坏了?魔法僵局?

    我正在处理多线程错误 现在我看到由于某种原因锁甚至没有执行一次而是被锁定了 我还有下一堂课 public sealed class Foo private readonly object lock new object private st
  • 使用 Python 关闭 AWS Lambda 执行上下文后进行清理

    来自使用 AWS Lambda 函数的最佳实践 https docs aws amazon com lambda latest dg best practices html 利用执行上下文重用来提高函数的性能 在函数处理程序之外初始化 SD
  • 使用 Maven 2 构建可运行的 jar

    我对 Maven 咒语相对较新 但我正在尝试使用 Maven 构建一个命令行可运行的 jar 我已经设置了我的依赖项 但是当我运行时mvn install并尝试运行罐子 发生了两件事 首先 没有找到主类 这是可以纠正的 当我更正这个问题后
  • 推送到 vercel 后无法连接到 websocket 服务器

    当我在本地运行我的服务器时 它工作得很好 但是 一旦我将其上传到 vercel 我就会收到类似 polling xhr js 202 GET 的错误400 与 wss giphy chat server vercel app socket
  • 如何使用 gimp 脚本 fu 保存(导出)所有图层?

    有了 gimp fu 我可以保存以下内容one层 至少 这就是我解释的定义gimp file save因为它需要参数drawable 现在 我有以下脚本 from gimpfu import def write text width 400
  • 将构建路径切换到 JDK 10 后,Eclipse 找不到 XML 相关类

    我正在开发一个Maven项目 https github com fcarsten portal core git 分支 platform b om brussels sr7 在 Eclipse 中 当我最近尝试将项目的 Java 构建路径切
  • 如何将Java编译为WASM(WebAssembly)?

    我想知道我可以使用Java并将其编译为WASM WebAssembly 吗 列表https web assembly org getting started developers guide https webassembly org ge
  • setup.py:限制python解释器允许的版本

    我有一个Python 库 不幸的是我还没有更新它以支持 Python 3 In its setup py 我补充说 install requires python lt 3 我的目的是不允许在 Python 3 下安装 使用这个包 因为我知
  • 找到具有给定总和的三元组

    一段时间以来 我一直在为这些问题苦苦挣扎 问题是这样的 我们有 n 2 个数字 我们需要找出是否存在一个三元组 a b c 使得 a b c 0 对于更一般的情况 a b c k k 已给出 存在复杂度为 O n 2log n 的解决方案
  • MAC OS X 10.6 上 MySQL C API 的编译问题

    我在使用 MySQL C API 和 Mac OS X 10 6 时遇到问题 当我想编译 SQL 客户端程序时 它会中止并显示此错误消息 ld 找不到 lmysqlclient 的库 Collect2 ld 返回 1 退出状态 我用这个命令
  • 为 macOS 构建,但链接到为独立构建的目标文件中

    我正在构建 ffmpeg 并且多个文件出现以下错误 我不是专门用独立式旗帜构建的 所以不明白为什么会发生这种情况 它到底意味着什么 它有问题吗 还是一个可忽略的警告 如果出现问题 有人知道如何解决吗 Building for macOS b