EN JA
ar(1)
ar(1) GNU Development Tools ar(1)

名前

ar -書庫の作成、変更、および書庫からのファイルの取出しを行う
 

書式

ar [ -] {dmpqrtx}[abcilosSuvV] [ membername] archive files...
 

説明

GNU arプログラムは書庫 ( archive ) ファイルの作成、変更、および書庫からのファイルの取出しを行う。書庫はいくつかのファイルを集めて一つのファイルにしたもので、内部からオリジナルのファイルそれぞれを復元することができるようになっている。内部に含まれるファイルを書庫の メンバー と呼ぶ。
 
オリジナルのファイルの内容、モード (許可属性)、タイムスタンプ、オーナーおよびグループも書庫に保存され、取出しの際に再設定することができる。
 
GNU ar では、書庫に含まれるメンバーの名前の長さに制限はない。ただし ar のインストール時の設定によっては、制限が付いている場合があるかもしれない (他のツールで扱える書庫フォーマットとの互換性のためであることが多い)。制限がある場合には、 15 文字 (a.out 関連フォーマット) または 16 文字 (coff 関連フォーマット) であることが多い。
 
ar はバイナリーユーティリティ (binary utility) とされている。なぜならこの種の書庫は汎用のサブルーチンをまとめた ライブラリ として用いられることが多いからである。
 
ar は、書庫に入っているリロケータブルなオブジェクトモジュールに含まれるシンボルの索引 (index) を作成することができる。これは修正子 (modifier) ` s' が指定されたときの動作である。一度作成されると、この索引は ar によって書庫の内容が変更されるたびに更新される (ただし ` q' によって書庫が更新された場合を除く)。このような索引を持った書庫では、ライブラリとしてリンクされる場合の速度が向上する。またライブラリの内部に含まれるルーチンが、書庫内部での位置によらずお互いを呼び出すことができるようになる。
 
` nm -s' または ` nm --print-armap' とすればこの索引をリストすることができる。書庫に索引がない場合は、 ar の別名である ranlib を用いて索引を追加することもできる。
 
ar の実行には最低 2 つの引数が必要である。一つは ar の動作 (operation) を指定する一文字の英字 (動作指定子 :keyletter) であり (他の英字が修正子として付随することもある)、もう一つは実際に操作の対象となる書庫の名前である。
 
ほとんどの動作では動作対象とするファイルを files 引数として与えることもできる。
 

オプション

GNU arでは動作指定子 p と修正子 mod の順番は任意であるが、これらはまとめて最初のコマンドライン引数に与える必要がある。
 
最初のコマンドライン引数の先頭にダッシュ (-) を加えてもかまわない。
 
動作指定子 p では実行する動作を指定する。これには以下のどれかを指定する。複数指定することはできない。
 
d
書庫からモジュールを削除 ( Delete ) する。削除するモジュールの名前は files に指定する。もし一つもファイルが指定されなかった場合は、書庫に何の操作も行わない。
 
修正子として v を指定すると、 ar は削除したモジュールをそれぞれ表示する。
 
m
書庫中のメンバーを移動 ( Move )する。
 
一つのシンボルが書庫内部の複数のメンバーによって定義されている場合、メンバーの配置の順番が異なると、このライブラリへのリンクのされ方が予想とは異なる可能性がある。
 
修正子による指定がなければ、 m による操作では files 引数によって指定されたメンバーを書庫の 最後尾に移動する。移動先を修正子 ` a'、 ` b'、 i によって指定することもできる。
 
p
指定された書庫内部のメンバー (複数可) を標準出力に表示 ( Print ) する。 ` v' 修正子が指定された場合には、メンバーの内容を標準出力に表示する前にそのメンバーの名前を表示する。
 
files を指定しないと、書庫の内部のすべてのファイルが表示される。
 
q
files を書庫の最後に追加する。このとき置き換えのチェックを行わない ( Quickappend )。
 
修正子 abi はこの操作には影響しない。新しいメンバーは常に書庫の最後に配置される。
 
修正子 vをつけると ar は追加する際にそれぞれのファイルを表示する。
 
この操作のミソは速度なので、書庫のシンボルテーブルは更新されない (存在していても更新されない)。シンボルテーブルを明示的に更新させるには ar s または ranlib を用いればよい。
 
しかし、 quick append の際に index が再構築されるとみなしているシステムがあまりにも多いので、 GNU ar の実装では qr と同義としている。
 
r
書庫に files を挿入し、同名のファイルがあったら置換 ( Replacement ) する。この操作は q とは異なり、もとから書庫にあったメンバーのうち追加したメンバーと同名のものはすべて削除される。
 
files のリストの中に存在しないファイルがあった場合 ar はエラーを表示する。そしてそのメンバーに関しては古いものを書庫にそのまま残し、変更を行なわない。
 
デフォルトでは新たなメンバーはファイルの最後に追加される。修正子 abi を使えば、現在存在しているメンバーからの相対位置として、新たなファイルを追加する位置を指定することができる。
 
この操作で修正子 v を用いると、挿入されるファイルを一行ずつ表示する。またこのとき a または r の文字を表示する。これはそれぞれファイルが追加 (append) された (つまり書庫には削除すべき古いメンバーが存在しなかった) か、置換 (replace) されたかに対応する。
 
t
書庫の内容の表 ( table ) を表示する。 files が指定された場合は、 files のうち書庫に存在するものを表示する。通常はメンバーの名前のみが表示される。モード (パーミッション)、タイムスタンプ、オーナー、グループ、サイズなども表示させたい場合には、リクエストの際に同時に修正子 v をつければ良い。
 
files を指定しなければ、書庫にあるすべてのファイルがリストされる。
 
同じ名前のファイル (仮に fie とする) が書庫 ( b.a とする) に二つ以上存在する場合には、 ` ar t b.a fie' では最初のものしか表示しない。すべての fie を表示させたい場合には、書庫のファイル全てを表示させるように実行しなければならない (この例ならば ` ar t b.a' となる)。
 
 
x
メンバーを書庫から取り出す ( eXtract )。この操作に修正子 v を用いると、 ar は取出したファイルをそれぞれ表示する。
 
files を何も指定しないと、書庫のすべてのファイルが取り出される。
 

 

いくつかの修正子 ( mod ) を動作指定子 p に続けて指定することができる。これによって動作を調整することができる。

 
a
新たなファイルを、すでに書庫に存在するメンバーの後 ( after ) に追加する。修正子 a を用いる場合は、書庫にすでに存在するメンバーの名前を引数 membername として書庫名の指定の前に置かなければならない。
 
b
新たなファイルを、すでに書庫に存在するメンバーの前 ( before ) に追加する。修正子 b を用いる場合は、書庫にすでに存在するメンバーの名前を引数 membername として、書庫名の指定の前に置かなければならない。 ( i と同じ動作をする)
 
c
書庫を作成 ( create ) する。書庫を更新する操作の場合には、指定した書庫が存在しなければ、それは常に作成される。しかしこのとき警告メッセージが出る。この修正子をあらかじめ同時に指定しておけば、この警告を抑止することができる。
 
f
書庫の中の名前を切りつめる。通常 ar では、ファイル名には任意の長さを指定できる。しかしこのことは、他のシステムのネイティブな ar プログラムと互換性のない書庫を作ってしまう原因にもなりかねない。もしこれが問題となるときは、修正子 f を用いれば書庫の中に入れるファイルの名前を切りつめることができる。
 
i
新しいファイルを書庫に存在するメンバーの前に挿入 (insert) する。この修正子 i を用いる際には、書庫に存在しているメンバーの名前を membername 引数として書庫の指定の前に置く必要がある。 ( b と同じ動作をする)
 
l
この修正子はエラーにはならないが何の効力もない。
 
o
書庫からメンバーを取り出すときに、元の日付を保存する ( original)。この修正子を指定しなければ、書庫から取り出されたファイルのタイムスタンプは取り出し時のものになる。
 
s
オブジェクトファイルの索引を書庫に書き込むか、または存在する索引を更新する。書庫に何の変化がなくても更新は行われる。この修正子はどんな操作とも同時に用いることができるし、単独でも用いることができる。 ` ar s' を書庫に対して実行するのは、 ` ranlib' と等価である。
 
S
書庫のシンボルテーブルを作成しない。これは大きな書庫を構築する場合は結構な速度向上になる。結果としてできた書庫は、リンカからは使うことができない。シンボルテーブルをつくるには、最後の段階で実行される arS 修正子をつけないか、あるいはそのアーカイブに ranlib を実行しなければならない。
 
u
通常 ar r... はリストされたすべてのファイルを書庫に挿入する。指定したファイルと同名のメンバーが書庫中にすでにあった時に、元のメンバーの方が古い場合に限って挿入を行いたい場合には、この修正子を使うと良い (update)。 ` u' 修正子を用いることができるのは r 操作 (replace) の場合に限られる。 qu の組み合わせは許されない。なぜならタイムスタンプをチェックすると ` q' 操作の速度面での利点が損なわれてしまうからである。
 
v
この修正子は饒舌 ( verbose ) モードの動作を指定するために用いられる。 ` v' 修正子が追加されると、多くの操作において、より詳細な情報が表示される (例えば処理しているファイル名など)。
 
V
この修正子は ar のバージョン番号を表示する。
 

 

関連項目

info の ` binutils ' エントリ、 The GNU Binary Utilities, Roland H. Pesch (October 1991)、 nm( 1)、 ranlib( 1)
 

著作権

Copyright (c) 1991 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.

5 November 1991 cygnus support