llvm-ar - LLVM 归档器¶
摘要¶
llvm-ar [-]{dmpqrstx}[abcDilLNoOPsSTuUvV] [relpos] [count] archive [files…]
描述¶
llvm-ar 命令类似于常见的 Unix 实用程序 ar。它将多个文件(例如对象文件和 LLVM 位码文件)归档到一个单一的归档库中,该库可以链接到程序中。但是,归档库可以包含任何类型的文件。默认情况下,llvm-ar 生成一个符号表,使链接速度更快,因为只需要查询符号表,而不需要查询归档库中的每个单个文件成员。
llvm-ar 命令可以用来读取 SVR4、GNU、BSD、大型归档和 Darwin 格式的归档文件,以及写入 GNU、BSD、大型归档和 Darwin 样式的归档文件。如果使用 SVR4 格式的归档文件以及 r
(替换)、d
(删除)、m
(移动)或 q
(快速更新)操作,则归档文件将以 --format
定义的格式重建。
以下是 llvm-ar 与之前 ar 实现的不同之处
以下选项不受支持
[f] - 截断插入的文件名
以下选项出于兼容性考虑被忽略
–plugin=<string> - 加载插件,该插件添加对其他文件格式的支持
[l] - 在 ar 中被忽略
符号表
由于 llvm-ar 支持位码文件,因此它创建的符号表包含本地符号和位码符号。
确定性归档
Windows 路径
在 Windows 上,llvm-ar 以与操作系统相同的大小写敏感方式处理归档文件的名称。在非 Windows 机器上,llvm-ar 不考虑字符大小写。
选项¶
llvm-ar 操作与其他 ar 实现兼容。但是,有一些修饰符 (L
) 在其他 ar 实现中找不到。 llvm-ar 的选项指定要对归档文件执行的单个基本操作、该操作的各种修饰符、归档文件的名称以及可选的文件名列表。如果未指定文件选项,则通常表示“无”或“所有”成员,具体取决于操作。选项、操作和修饰符在下面的部分中进行了解释。
最少的选项集至少包含一个操作符和归档文件的名称。
操作¶
- d [NT]¶
从
archive
中删除文件。N
和T
修饰符适用于此操作。文件选项指定要从归档文件中删除哪些成员。如果指定的文件未出现在归档文件中,则不会出错。如果未指定文件,则归档文件不会被修改。
- m [abi]¶
将文件从
archive
中的一个位置移动到另一个位置。a
、b
和i
修饰符适用于此操作。所有文件都将移动到修饰符给定的位置。如果未使用修饰符,则文件将移动到归档文件的末尾。如果未指定文件,则归档文件不会被修改。
- p [v]¶
将文件打印到标准输出流。如果未指定文件,则打印整个
archive
。使用v
修饰符,llvm-ar 还会打印正在输出的文件的名称。打印二进制文件是不明智的,因为它们可能会混淆终端设置。p
操作永远不会修改归档文件。
t[v] .. option:: t [vO]
修饰符(特定于操作)¶
以下修饰符特定于某些操作。请参阅“操作”部分以确定哪些修饰符适用于哪些操作。
- b¶
在插入或移动成员文件时,此选项将新文件的目标指定为在relpos成员之前。如果找不到relpos,则文件将放置在
archive
的末尾。relpos不能在没有a
、b
或i
的情况下使用。此修饰符与i
修饰符相同。
- L¶
快速追加
archive
时,改为快速追加其成员。这是llvm-ar的一个功能,在gnu-ar中找不到。
- N¶
在提取或删除与另一个成员共享名称的成员时,count参数允许您提供一个正整数,以选择给定名称的实例,“1”表示第一个实例。如果未指定
N
,则将选择该名称的第一个成员。如果未提供count,则操作失败。*count*不能是
- o¶
提取文件时,使用任何文件在
archive
中出现的修改时间。默认情况下,从存档中提取的文件使用提取时间。
- O¶
显示存档内成员的偏移量。
- T¶
--thin
的别名。在许多ar实现中,T
具有不同的含义,如X/Open系统接口中所指定。
- v¶
打印文件或
archive
目录表时,此修饰符指示llvm-ar在输出中包含其他信息。
修饰符(通用)¶
以下修饰符可以应用于任何操作。
- D¶
对时间戳和UID/GID使用零。默认情况下设置此值。
- P¶
匹配成员名称时使用完整路径,而不仅仅是文件名。这在操作由其他存档器生成的
archive
时非常有用,因为某些存档器允许路径作为成员名称。这是瘦存档的默认行为。
- s¶
此修饰符请求向
archive
添加存档索引(或符号表),就像使用ranlib一样。符号表将包含存档中所有位代码文件定义的所有外部可见函数和全局变量。默认情况下,llvm-ar在存档中生成符号表。这也可以用作操作。
- u¶
仅更新时间戳较新的文件的
archive
成员。
- U¶
使用实际的时间戳和UID/GID。
其他¶
- --format=<type>¶
此选项允许选择默认、gnu、darwin、bsd或coff
<type>
。使用默认<type>
创建archive
时,:program:llvm-ar
将尝试从输入文件推断它,如果无法做到这一点,则回退到默认工具链目标。
- -h, --help¶
打印命令行选项及其含义的摘要。
- -M¶
此选项允许通过标准输入流读取MRI脚本。此选项与其他任何选项都不兼容。
- --output=<dir>¶
指定一个目录,将存档成员提取到该目录中。默认情况下,使用当前工作目录。
- --rsp-quoting=<type>¶
- 此 选项 选择 响应 文件的 引用 样式 ``<type>`` , 既可以是, posix¶
- ``posix`` 也可以是 ``windows``。 在 Windows 上 的 默认值 是 ``windows``, 否则 默认值¶
- 是 ``posix``。¶
- --thin¶
创建或修改存档时,此选项指定
archive
将是瘦存档。默认情况下,存档不会创建为瘦存档,并且在修改瘦存档时,它将转换为常规存档。
- --version¶
显示llvm-ar可执行文件的版本。
- -X mode¶
指定llvm-ar将识别的目标文件类型。模式必须是以下之一
- 32
仅处理32位对象文件。
- 64
仅处理64位对象文件。
- 32_64
处理32位和64位对象文件。
- any
处理所有对象文件。
默认情况下,处理 32 位对象文件(忽略 64 位对象)。可以通过 OBJECT_MODE 环境变量设置模式。例如,OBJECT_MODE=64 会导致 ar 处理任何 64 位对象并忽略 32 位对象。-X 标记会覆盖 OBJECT_MODE 变量。
- @<FILE>¶
从响应文件
<FILE>
读取命令行选项和命令。
MRI 脚本¶
llvm-ar 理解遵循 ar 传统的文件归档程序常用的 MRI 脚本接口的一个子集。MRI 脚本包含归档程序要执行的一系列命令。 -M
选项允许通过标准输入流将 MRI 脚本传递给 llvm-ar。
请注意,llvm-ar 在使用 MRI 脚本方面存在已知的限制。
每个脚本只能创建一个归档文件。
无法修改现有的归档文件。
MRI 脚本命令¶
每个命令以命令名称开头,并且必须出现在它自己的行上。某些命令具有参数,这些参数必须用空格与名称分隔。MRI 脚本应该以 CREATE
或 CREATETHIN
命令开头,通常以 SAVE
命令结束。‘*’ 或 ‘;’ 之后的任何文本都被视为注释。
- CREATE archive¶
开始创建具有指定名称的常规归档文件。后续命令作用于此
archive
。
- CREATETHIN archive¶
开始创建具有指定名称的精简归档文件。后续命令作用于此
archive
。
- ADDLIB archive¶
将
archive
的内容追加到当前归档文件。
- ADDMOD <file>¶
将
<file>
追加到当前归档文件。
- DELETE <file>¶
删除当前归档文件的文件名(不包括目录组件)与
<file>
匹配的成员。
- SAVE¶
将当前归档文件写入先前
CREATE
/CREATETHIN
命令中指定的路径。
- END¶
结束 MRI 脚本(可选)。
退出状态¶
如果 llvm-ar 成功,它将以 0 退出。否则,如果发生错误,它将以非零值退出。