【问题标题】:What's the meaning of LDFLAGS: -Wl,-segalign,4000LDFLAGS是什么意思:-Wl,-segalign,4000
【发布时间】:2019-08-21 09:28:08
【问题描述】:

于是我偶然发现了一个 cydia 更新说明:

0.9.6010 修复了 32 位 armv7 切片,该切片阻止扩展加载到 Cydia。 (请注意,此外,由于 Apple 所做的更改,所有 32 位二进制文​​件,尤其是扩展,必须使用 -WI,-segalign,4000 对于 iOS 9 重新编译。尚未重新编译的扩展可能会“走运”并且工作,但它们通常会失败甚至崩溃。)

这里我想问一下-WI,-segalign,4000各个标志是什么意思,尤其是-WI还是-Wl?如果仅用于 arm64 设备,我们还需要它吗?

【问题讨论】:

    标签: ios llvm theos


    【解决方案1】:

    这是被分成独立部分的标志:

    • -Wl 来自clang docs,这是一个命令行标志,允许您将参数直接传递给链接器(clang 是调用链接器的驱动程序,-Wl 表示将以下逗号分隔的参数转发给链接器而不是被编译器消耗)
    • segalign 来自Mach linker docs,这指定了段对齐(段如二进制文件段,参见Wikipedia)。在这种情况下,每个段都必须对齐到 16384 字节(或十六进制的0x4000)。
    • 4000 是对齐的值(它是 -segalign 标志的一部分。

    如果仅用于 arm64 设备,我们还需要它吗?

    您指的是Armv7 特定的修复/注释。除非注释中也提到了arm64,否则我认为可以安全地假设arm64 不需要该标志。不过这只是猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多