zix*_*ool 2 unix gnu makefile archive unix-ar
我正在阅读有关ranlib更新索引或生成存档内容索引的内容
在您可以提供的选项中ranlib 有-D\nand-U
我阅读了定义,但我无法理解它:
\n\n他们是这么说的:
\n\n-D\nRun Code Online (Sandbox Code Playgroud)\n\n在确定性模式下运行。符号映射存档成员\xe2\x80\x99s 标头的 UID、GID 和时间戳将显示为零。使用此选项时,多次运行将生成相同的输出文件。\n如果 binutils 配置了 --enable-deterministic-archives,
\n\n任何人都可以提供这两个选项的简单解释ranlib\n(-D 和-U)
为什么有人需要使用这个选项?
\n许多发行版正在努力使从源代码到二进制文件的所有软件构建都是“确定性的”,这意味着在这种情况下,无论谁执行构建或何时执行构建,您得到的二进制文件都将是字节的-byte 与其他人的构建相同。
目标是允许通过校验和验证二进制文件、验证签名等。
不用说,这是跨许多工具的大量工作,并且假设您使用预定义版本的编译器、运行时库等。
POSIX 归档库格式(libfoo.a文件格式)基本上是目标文件的集合以及目录。默认情况下,目录包含每个对象文件的时间戳、用户 ID 和组 ID。显然,在libfoo.a文件中保留此信息会使其具有不确定性,因此逐字节不完全相同。
因此,对于关心确定性构建的人来说,他们应该使用-D将 0 写入这些字段而不是实际值的选项。对于不关心确定性构建的人,他们应该使用-U使用真实值的选项。
请注意,如果您使用该-D选项,ranlib您将破坏 make 的库更新功能,该功能依赖于从库存档内部检查目标文件的时间戳。
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |