ar (Unix)

✍ dations ◷ 2025-02-24 01:05:08 #归档格式,文件归档器,GNU计划软件

ar(archiver)是Unix系统上的归档工具,用于将多个文件归档为一个文件。ar目前一般仅被链接器用创建更新静态库和生成.deb包。它的归档功能现在基本被 tar所取代。 GNU Binutils包含ar .

Linux标准规范(LSB)中,ar 已被弃用,并可能在将来的版本中移除,理由是LSB不应包含软件开发工具和指定.o和.a文件格式。

ar格式从未标准化过,历史上有过多种形式 如 V6, V7, AIX和Coherent等,与通用格式都有很大的差别。现在的通用格式主要基于两种变体:BSD 和 System V(最初称为 COFF,也被 GNU, ELF和Windows使用。)Debian的 ".deb" 使用通用格式。

.ar文件起始是一个全局文件头,接着是各个文件的文件头和数据部分。数据部分为2字节对齐,如果数据长度为奇数,则填充一个换行符(\n,0x0A)。

"!<arch>" 和换行符(0x0A).

归档的每个文件包含文件头存储文件信息。下表为通用格式。数值为ASCII编码,并用空格(0x20)向右填充。

标头全部为可打印的ASCII字符和换行符,所以只包含文本文件的ar归档文件仍然是文本文件。

每个文件从偶数字节开始,如果长度为奇数,则需要填充一个换行符,文件头中的文件大小存储是实际大小。

由于文件名长度和格式的限制,GNU和BSD变体都设计了不同的存储长文件名的方法。尽管通用格式不会受到2038年问题的困扰,但很多系统上的ar程序存在这种问题,可能需要修改以正确处理超过2147483647的时间戳。有关这些扩展的说明,请参见libbfd。

根据格式的不同,许多ar实现了用于快速链接的全局符号表(armap,目录或索引)而无需扫描整个存档中的符号。POSIX识别此功能,并且要求ar实现具有 -s选项更新符号表。大多数实现将其放在第一个文件条目中。

BSD ar 在文件名头填充ASCII空格符,文件名如包含空格会有问题。4.4BSD ar将"#1/"和文件名长度放置在文件名字段,并将文件名放置在数据段的最前面

BSD ar 自身不处理全局符号查找表,而使用单独的工具ranlib。ranlib会插入一个与系统架构相关的文件 __.SYMDEF作为第一个文件 一些后来的版本会在名称后面放置一个空格和"SORTED"字符表示已排序。 Darwin 64位系统使用__.SYMDEF_64

由于POSIX规范要求-s选项,新的BSD ar 重新实现了该要求。FreeBSD 弃用了 SYMDEF 表而采用 System V 类型的查找表。

System V ar 用字符'/'(0x2F)标记文件名结束,从而文件名可以使用空格。需要扩展的文件将文件名存储在"//"文件的数据段,在标头文件名字段中写入'/'和十进制的偏移地址。 "//"文件包含的是长文件名列表,以换行符分割。通常 "//" 是第二个条目,符号表为第一个条目。

System V ar 用 "/" 文件名表示对应的数据为符号查找表,包含三部分,并存储为连续的数据。

有些 System V ar不使用上述各式,如HP-UX 11.0,上述信息存储为 SOM文件格式。

为解决4GiB文件限制,某些系统如Solaris 11.2 和 GNU使用不同的查找表。不同之处在于使用64位整数和用"/SYM64/"代替"/"

Windows的PE/COFF格式基于 System V/GNU。 第一个条目为 "/" 与System V/GNU符号表相同。第二个条目也是"/",使用小端整数,表示ECOFF扩展,用于存储经过排序的符号交叉引用表。 第三个条目为 "//" 长文件名数据。

GNU binutils和elfutils中的 ar 有一个 "thin archive" 格式,特征签名为 !<thin>,仅包含符号表和对该文件的引用。

相关

  • 滨海塞纳省滨海塞纳省(法语:Seine-Maritime)是法国上诺曼底大区所辖的省份,西邻大西洋。该省编号为76。5个海外省及大区
  • 殷鸿福殷鸿福(1935年3月19日-),中国地质古生物学家。1956年毕业于北京地质学院地质勘探系煤田地质专业,1961年在北京地质学院地层古生物学专业研究生毕业后一直留校任教。曾在美国自然
  • 禄丰县恐龙博物馆禄丰县恐龙博物馆,又称禄丰博物馆,位于中国云南省楚雄市禄丰县。该馆为国有博物馆,隶属于禄丰县文体广电旅游局。禄丰县恐龙博物馆于1991年10月26日正式开馆,馆名由费孝通先生题
  • 国家科技部1999年规定:印章直径5厘米,中央刊国徽,由国务院制发。中华人民共和国教育部中华人民共和国财政部中国科学院中国工程院国家国防科技工业局中央军委装备发展部中国科学技术协会
  • 民事上诉法院德克萨斯州最高法院(Supreme Court of Texas (SCOTX);德州最高法院)为美国德克萨斯州民事案件上诉(包含法律认为是民事诉讼而非刑事诉讼犯罪的青少年犯罪)的终审法院。另一个法院
  • 朝鲜肃宗朝鲜肃宗(朝鲜语:조선 숙종/朝鮮 肅宗 ;1661年-1721年),名李焞(朝鲜语:이순/李焞 ),幼名龙祥,字明普,是朝鲜王朝的第19代君主,1674年至1720年在位。显宗二年八月十五日,王妃金氏在庆德宫会
  • 皮特·贝斯特兰多夫·彼得·"皮特"·贝斯特(英语:Randolph Peter "Pete" Best,1941年11月24日-)是一名英国音乐家,主要是因为他是披头士最初确定下来的鼓手。他出生于英属印度金奈市。1945年随
  • 托普斯菲尔德托普斯菲尔德(英语:Topsfield)是一个美国城镇,位于缅因州华盛顿县。根据2010年的人口普查,当地人口为237人。根据美国人口普查局,该镇的总面积为55.32平方英里(143.28平方千米),其中5
  • 稷山板枣稷山板枣,是指中华人民共和国山西省稷山县的一款土特产板枣,是中国地理标志产品。稷山板枣形状长圆、敦肥如板而得名,外皮柔韧而富弹性。板枣生食肉厚甜脆,也可以酒密封保存。明
  • 拉扎尔·莫伊谢耶维奇·卡冈诺维奇拉扎尔·莫伊谢耶维奇·卡冈诺维奇(俄语:Ла́зарь Моисе́евич Кагано́вич,1893年11月22日-1991年7月25日)是一位苏联政治家。卡冈诺维奇曾经是斯大林