Ar_(UNIX)
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "Ar" UNIX ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2020年12月)

UNIXにおけるarchiver(単にarとしても知られる)とは、複数のファイルを一つのアーカイブにまとめるユーティリティである。こんにちにおいて、.mw-parser-output .monospaced{font-family:monospace,monospace}arは、一般にリンカが使用する静的リンクされたライブラリの生成や更新にのみ利用される。すなわち、arは任意の目的でアーカイブの生成に利用できるが、静的ライブラリの作成を除いてその用途をほとんどtarに取って代わられた。arはGNU Binutilsに含まれるプログラムである。
ファイルフォーマットの詳細

arのファイルフォーマットは一度も標準化されたことがない。現代的なアーカイブは2つの良く知られた派生物で利用される共通フォーマットが基になっている。すなわちBSDGNUである。

歴史的には、その他変種も存在し、例えばAIX[1]にはSmall[2]、Big[3]そして"Coherent"と3つの形式があり、いずれもBSD・GNU共通形式とは全く異なったフォーマットである。

DebianLinuxディストリビューションパッケージである".deb"はBSD・GNU共通フォーマットを採用したarアーカイブである。

arが生成するアーカイブの先頭データにはグローバルヘッダが存在し、その後他ヘッダと格納ファイル本体のデータセクションが続く。

データセクションは2バイト毎に切り詰められる。仮にオフセットが奇数で終端をむかえた場合、'\n'が詰め物として利用される。

Win32以降のMicrosoft Windowsの開発環境のライブラリファイル(.lib)も内部的にarフォーマットを使用している。
グローバルヘッダ

グローバルヘッダはマジックアスキー文字列"!<arch>"を含む単一のフィールドであり、その後、制御文字である単一のラインフィード(LF)が続く。
ファイルヘッダ

以下のような共通フォーマットを持つ。

フィールドの開始オフセットフィールドの終了オフセットフィールド名フィールドフォーマット
015ファイル名
ASCII
1627ファイル改変時のタイムスタンプ十進数
2833UID十進数
3439GID十進数
4047ファイルモード八進数
4857ファイルサイズ(バイト)十進数
5859マジックナンバー0x60 0x0A

ファイル名の長さやフォーマットの制限により、GNUとBSDの派生双方で長いファイル名を格納する方法(ただし両者で異なる)が開発されている。
BSDの派生版

BSD arは、文字列"#1/"を配置し、このことにより拡張されたファイル名を格納できる。この文字列の後にファイル名のフィールドにあるファイル名の長さのデータが続き、さらにファイルヘッダの実ファイル名が添加される。
GNUの派生版

GNU arは"//"という名前のレコードを持ち、ファイルのデータセクション上に複数の拡張型ファイル名を格納している。このレコードは将来のヘッダ参照用に確保されている。ヘッダは、レコード"/"の格納によって拡張されたファイル名を参照する。このレコードの後に拡張ファイル名データセクション上に存在するファイル名の先頭十進オフセットが続く。この"//"ファイルのフォーマット自体は単なるロングファイルネームのリストである。各フィールドは1つ以上の文字列LFによってそれぞれ分離される。十進オフセットは文字数であり、"//"ファイル内にある行数や文字列数ではないことに注意しておきたい。

GNU arは'/'をファイル名の終端と認識する。すなわち、これを利用すれば拡張ファイル名を利用することなく、スペースを使用することができる。

GNU arは特殊なファイル名"/"を利用することにより、その直後のデータエントリにarライブラリのアクセス速度を向上するのに利用されるシンボルルックアップテーブルを含めることができる。このシンボルテーブルは隣接データとして同時に記録される以下3つの部分からなる。
32ビットビッグエンディアン整数で与えられるテーブル上のエントリー数

32ビットビッグエンディアン整数の集まり。各シンボル毎に、シンボルを含むファイル用のヘッダのアーカイブ内の位置を1つずつ記録する。

終端が0である文字列の集まり。それぞれシンボル名であり、2番目のデータにある位置のリストとして、同一の順番から成る。

特殊なファイル"/"は、特定の終端文字列を持たない。最後のシンボル名がひとたび読み込まれれば、そこで終了すると仮定される。

別のコマンドとしてranlibというものがある。これはar sを実行した場合と完全に等価である。すなわちシンボルルックアップテーブルを追加するだけのコマンドである。
使用例

例えば、ファイルclass1.o, class2.o, class3.oからなるアーカイブを作成するには、次のコマンドを実行する。ar rcs libclass.a class1.o class2.o class3.o

class1.o, class2.o, and class3.oに依存するプログラムをコンパイルするには次を実行する。cc main.c libclass.a

以上が静的リンクの方法だが、以下のようにライブラリを作成することなくプログラムにコンパイルすることもよく行われる。cc main.c class1.o class2.o class3.o
脚注^ “ ⇒ar Command”. IBM. 2011年5月27日閲覧。
^ “ ⇒ar File Format (Small)”. IBM. 2011年5月27日閲覧。
^ “ ⇒ar File Format (Big)”. IBM. 2011年5月27日閲覧。

関連項目

.deb

アーカイブフォーマット

UNIXユーティリティの一覧

外部リンク

ar
: create and maintain library archives ? The Open Group基本仕様書第7号2018年版「シェル及びユーティリティ」

ar(1) ? Linux User Commands Manual (en)

Manpage of ar - JM Project


FreeBSDマニュアルページ

UNIX Seventh Editionのar用マニュアルページ

The 32-bit PA-RISC Run-time Architecture Document, HP-UX 11.0 Version 1.0, Hewlett-Packard, 1997.
Chapter 4: Relocatable Librariesを参照のこと。オンラインでは ⇒[1]が利用可能(devresource.hp.com、PDF)。

ranlib(1) ? Linux User Commands Manual (en)

Manpage of ranlib - JM Project










アーカイブファイルフォーマット(比較)
アーカイブのみ

ar

AXF

BagIt(英語版)

cpio

LBR(英語版)

shar(英語版)

tar

WAD

圧縮のみ


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:23 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef