概要
llvm-ar [-]{dmpqrtx}[Rabfikou] [relpos] [count]
描述
llvm-ar
命令是类似于常见Unix工具ar
。它将多个文件一起归档到一个文件中。这样做的目的是通过LLVM bitcode生成可以链接到LLVM程序的归档库。但是,存档可以包含任何类型的文件。默认情况下, llvm-ar生成一个符号表,可以使链接更快,因为连接时只需要查询符号表,而不是存档的每个单独文件成员。
llvm-ar
命令可以用来读取 SVR4,GNU和BSD风格的存档文件。但是,现在它只能以GNU格式编写。如果SVR4或BSD样式存档与r(替换)或q(快速更新)操作一起使用,则存档将以GNU格式重建。
llvm-ar
与之前版本的ar
实现的不同之处:
符号表:
由于llvm-ar支持bitcode文件。它创建的符号表是GNU格式,包括native和bitcode文件。
长的路径名
目前llvm-ar可以读取GNU和BSD长文件名,但只能写GNU格式的档案。
选项
llvm-ar
的选项和其他的ar
实现完成兼容,但是有一些修饰符是其他ar
实现没有的。llvm-ar的选项指定要对归档执行的单个基本操作,该操作的各种修饰符,归档文件的名称以及可选的文件名列表。这些选项用于确定llvm-ar应如何处理存档文件。
操作和修改器将在以下部分中介绍。最小的选项集是至少一个运算符和存档的名称。通常,归档文件以.a后缀结尾,但这不是必需的。继存档名称来自列表文件指示存档的特定成员进行操作。如果未指定files
选项,则通常表示“none”或“all”成员,具体取决于操作。
操作 | 说明 |
---|---|
d | 从存档中删除文件。没有修饰符适用于此操作。files 选项指定哪些成员应该从档案中移除。如果指定文件未出现在存档中,则不会出错。如果没有指定files 选项,档案不被修改。 |
m[abi] | 将文件从存档中的一个位置移动到另一个位置。a,b,i 修饰符适用于这种操作。指定的文件将被移动到由修饰符给出的位置。如果未使用修饰符,则文件将移动到存档的末尾。如果没有文件被指定,档案不被修改。 |
p | 将文件打印到标准输出。此操作只是打印指定的文件到标准输出。如果没有文件被指定,整个存档被打印。打印bitcode文件是不明智的,因为它们可能会混淆您的终端设置。该操作从未修改存档。 |
q | 快速将文件附加到存档的末尾。 此操作可快速将指定文件添加到存档,而无需检查应首先删除的重复项。如果没有文件被指定,档案不被修改。由于llvm-ar构造归档文件的方式,q操作是否比r操作更快是不确定的。 |
r[abu] | 替换或插入文件成员。a,b,u 修饰符适用于这种操作。此操作将替换现有 文件,或者如果它们不存在则将其插入存档的末尾。如果没有文件被指定,档案不被修改。 |
t[v] | 打印目录。如果没有任何修饰符,此操作只会将成员的名称打印到标准输出。使用v修饰符, llvm-ar还会打印出文件类型(B = bitcode,S =符号表,空白=常规文件),权限模式,所有者和组,大小和日期。如果指定了任何文件,则列表仅适用于那些文件。如果没有文件的规定,对整个归档内容表格打印出来。 |
x[oP] | 将存档成员提取回文件。该o,P 修改适用于该操作。此操作从存档中检索指示的文件,并将它们写回操作系统的文件系统。如果没有文件被指定,整个存档提取物。 |
修饰符(特定操作的) | 说明 |
---|---|
a | 插入或移动成员文件时,此选项将新文件的目标指定为在relpos 成员之后。如果未找到relpos ,则文件将放置在存档的末尾。 |
b | 插入或移动成员文件时,此选项指定新文件的目标位于relpos 成员之前。如果未找到relpos ,则文件将放置在存档的末尾。此修饰符与i 修饰符相同。 |
i | 同b |
o | 提取文件时,此选项将导致llvm-ar保留其写入的文件的原始修改时间。 |
u | 替换存档中的现有文件时,仅替换具有时间戳的文件,而不是存档中成员的时间戳。 |
修饰符(通用) | 说明 |
---|---|
c | 对于所有操作,如果存档不存在,llvm-ar将始终创建存档。通常,llvm-ar将打印一条警告消息,指示正在创建存档。使用此修饰符会关闭该警告。 |
s | 此修饰符请求将归档索引(或符号表)添加到归档中。这是默认的操作模式。符号表将包含归档中所有bitcode文件定义的所有外部可见函数和全局变量。 |
S | 此修饰符与s修饰符相反。它指示llvm-ar不构建符号表。如果同时使用s和S,则以选项中出现的最后一个修饰符为准。 |
v | 显示详细的操作信息 |
标准
llvm-ar
工具的目标是提供一个 POSIX兼容的ar
的功能的超集,llvm-ar
可以SVR4和BSD4.4格式的归档文件。如果将f
修饰符赋予x
或r
操作,则llvm-ar
将编写SVR4兼容的归档。如果没有此修饰符, llvm-ar将写入BSD4.4兼容的归档,这些归档在标题之后立即具有长名称,并使用标题中的名称“#1 / ddd”表示。
退出
如果llvm-ar成功,它将以0退出。使用错误导致退出代码为1;硬(通常是文件系统)错误导致退出代码为2;杂项或未知错误导致退出代码为3。