名称
ar ― 接続可能なアーカイブとライブラリの作成および保守
構文
ar [-]key [-][modifier ...] [posname] afile [name ...]
説明
ar コマンドは 1 本のアーカイブファイルに結合されるファイルのグループを保守します。主な用途は、リンクエディタで使用するライブラリファイルを作成、アップデートすることです ld(1) を参照)。ただし、これは同様にこれに似た目的にも使用できます。 ar で使用するマジック文字列およびファイルヘッダはプリント可能な
ASCII 文字で構成されます。アーカイブがプリント可能なファイルで構成される場合は、アーカイブ全体がプリントできます。
個々のファイルは、アーカイブファイルに変換せずに挿入されます。 ar がアーカイブを作成するとき、すべてのマシンに対して移植可能なフォーマットでヘッダを作成します。
移植可能なアーカイブフォーマットと構造の詳細については、 ar(4) を参照してください。 アーカイブ
シンボルテーブル ar(4) に説明があります)
は、オブジェクトファイルのライブラリを繰り返し効率よく検索するためにリンクエディタで使用されます。 アーカイブに少なくとも 1 つのオブジェクトファイルがあるときに限り、アーカイブ シンボルテーブルは、 ar で作成、保守されます。
アーカイブ シンボルテーブルは、特に指定されたファイル上にありますが、これは常にアーカイブ内の最初のファイルです。このファイルはユーザーは参照できずアクセス不能です。 ar がアーカイブの内容の作成または更新に使用されると常に、このシンボルテーブルは再構築されます
(z 修飾子が使用されていない場合)。次に説明のある s 修飾子により、シンボルテーブルは強制的に再構築されます。
drqtpmx というセットに含まれる key 操作文字を 1 つ指定する必要があり、その文字の前には、ハイフン
(-) を指定することもできます。 必要な key 操作文字を指定する場合、 abcfFilsuvzACT セットの、1 つまたは複数の modifier を指定しなければなりません。 posname は、key 操作文字 r および m とともに指定し、修飾子 a、 b、
および i は、アーカイブの位置を指定するためのものです。 afile はアーカイブファイルです。 アーカイブファイルを構成するそれぞれのファイルを指定する場合は、 name 引き数を使用します。
以下のリストは、 key 操作文字について説明したものです。
| d | | アーカイブファイルから指定ファイルを削除します。 |
| r | | 指定ファイルを置き換えるか、新しいファイルを次のアーカイブに追加します。 修飾子 u を操作文字 r と併用する場合は、修正日付が、対応するメンバーファイルよりも遅れているファイルだけが置き換えられます。 セット abi のオプションの位置決め文字を使用する場合は、 posname 引き数が必ず存在しなければならず、新しいファイルを (a)
の後か、 (b または i) posname の前に入れるように指定します。 位置決め文字がないときは、新しいファイルは最後に入ります。 afile は、存在していなければ 作成されます。 名称が指定されていない場合、 指定したアーカイブファイルが存在しなければ、 ar はアーカイブヘッダだけが入った空のアーカイブファイルを作成します ar(4) を参照)。 アーカイブに、名前が現在のディレクトリと一致する単一または複数のファイルがあり、一致する各アーカイブファイルは、 u 修飾子が同様に指定されていない限り、どのファイルがより新しいかは検討せずに、対応するローカルファイルと置き換えられます。
|
| q | | 素早く指定ファイルをアーカイブファイルの終端に追加します。
位置決め文字は無効です。この操作は、追加されたメンバーがすでにアーカイブ中にあるかどうかを判定するチェックはしません。
まだ存在しなければ、 ar は afile を作成します。 |
| t | | アーカイブファイルの内容の目次を標準出力に出力します。
名前を与えなければ、アーカイブ内のすべてのファイルを記述します。
名前を与えると、そのファイルに関する情報だけが表示されます。 |
| p | | アーカイブの指定ファイルを標準出力に出力します。ファイルの名前を何も指定しないと、すべてのファイルの内容がアーカイブ内の順番に従って出力されます。 |
| m | | 指定ファイルを移動します。 デフォルトでは、ファイルはアーカイブの終端に移動します。
位置決め文字が存在する場合は、 posname 引き数が必ず存在しなければなりません。また、 r 操作と同様に、 posname は、ファイルの移動先を指定します。 位置決め文字と併用すると、ファイルがアーカイブに現在あるのと同じ順序で移動され、コマンド行で指定された順序で移動されないことに注意してください。例を参照してください。 |
| x | | 指定ファイルを抽出します。 名前を与えなければ、アーカイブ内のすべてのファイルが抽出されます。どんな場合にも、 x で、アーカイブファイルのエントリーは変更できません。 |
以下のリストは、オプションの modifier について説明したものです。
| a | | posname で指定した、すでに位置決めされているファイルの後にファイルを配置します。 |
| b | | posname で指定した、すでに位置決めされているファイルの後にファイルを配置します。 |
| c | | afile が作成される際に通常生成されるメッセージを表示しないように指定します。 r および q 操作については、 afile が存在していなければ、 ar が通常、作成します。 |
| f | | アーカイブに対する処理を行う前に、指定ファイルの名前を
14 バイトに切り捨てます。 この修飾子は、最大 14 バイトまでのファイル名を使用できる、旧バージョンの
HP-UX との互換性を保つためのものです。14 文字より長いファイル名は切り捨てられます。 r 操作と併用すると、切り捨てられたファイル名に一致する最初の既存のファイルが置き換えられます。また、 f 修飾子を他の操作と併用すると、切り捨てられたファイル名ではなく完全なファイル名を指定できます。 F 修飾子についての説明も参照してください。 |
| i | | posname を指定して位置決めしてあるファイルの前に、新しいファイルを配置します。 b 修飾子と同じです。 |
| l | | 環境変数 TMPDIR で指定されたディレクトリ、またはデフォルトディレクトリ /var/tmp ではなく、ローカルの現在のワークディレクトリにテンポラリファイルを入れます。 d、 m、 q、
および r 操作と s および F 修飾子だけがテンポラリファイルを使用します。 |
| s | | ar が、アーカイブ内容を修正する操作で呼び出されなくても、アーカイブ
シンボルテーブルを再生成します。この修飾子で、 strip コマンドがアーカイブに使用された後で strip(1) を参照)、または、 z 修飾子を使用してアーカイブの内容を修正した後で、アーカイブ
シンボルテーブルをリストアできます。 |
| u | | アーカイブの内容をアップデートします。 (r 操作専用)
ローカルファイルがアーカイブ内の対応する既存のファイルよりも新しくない限り、ローカルファイルをアーカイブにコピーしないでください。 |
| v | | アーカイブファイルの作成および修正に関するファイルごとの詳細な説明を標準出力に出力します。 t と併用すると、 v はファイルに関する全情報の多項目のリストを示します。 d、 m、 p、 q、
または x 操作と併用すると、 詳細表示修飾子により、 ar は、その操作と対応するそれぞれの key 操作文字とファイル名をプリントします。 r 操作については、 ar は、新しいファイルを追加する場合には a、 既存のファイルを置き換える場合には r を示します。 p 操作では、 ar は、ファイルの内容を出力する前に、ファイル名を標準出力に出力します。 |
| z | | アーカイブの内容を修正するときに、シンボルテーブルを再構築しないようにします。この修飾子は通常、小さなファイルが多数含まれる大きなアーカイブを作成するときに長い時間がかからないようにするためのみに有効です。
既存のアーカイブにシンボルテーブルが含まれる場合、 z 修飾子は、そのアーカイブを無効とみなします。15 バイト以上のファイル名のアーカイブの場合、そのアーカイブ全体が再書き込みされます。シンボルテーブルを再構築するには、 ranlib コマンド ranlib(1) を参照) を使用するか、 s 修飾子を指定して ar を再度実行します。 |
| A | | オプションのアクセス制御リストエントリーに関する警告メッセージを出さないように指定します。 ar は、ファイルのアクセス制御リストにおいてオプションアクセス制御リストエントリーをアーカイブしません acl(5) を参照)。 通常、警告メッセージは、オプションアクセス制御リストエントリーがあるファイルごとに表示されます。 |
| C | | 抽出したファイルが同名のファイルに置き換えられないようにします。 C 修飾子は x 操作でのみ使用できます。 |
| F | | アーカイブ全体を縮小します。 F 修飾子は、アーカイブ全体を再書き込みします。その際、アーカイブ内のすべてのファイル名は
14 バイトに切り捨てられます。これは、 ar でアーカイブの内容を修正しなかった場合も同様です。
長いファイル名のテーブルは削除されます ar(4) を参照)。
この修飾子は、最大 14 バイトまでのファイル名を使用できる、旧バージョンの
HP-UX との互換性を保つためのものです。 f 修飾子についての説明も参照してください。 |
| T | | ファイルをアーカイブしたときの名前がファイルシステムで使用可能な長さよりも長くなる場合に、そのファイル名を切り捨てます。デフォルトでは、ファイルシステムで使用可能な長さよりも長い名前のファイルが抽出されず、エラーとなります。 T 修飾子は x 操作でのみ使用できます。 次の組み合わせだけが有効です。修飾子と操作とのこれ以外の組み合わせには、次の操作に対する効果はありません。 | d: | | v, f, F, l | | m: | | v, f, F, l,
および a | b | i | | r: | | v, f, F, l, c, A, u,
および a | b | i | | q: | | v, f, F, l, c, A, z, s | | t: | | v, f, F, s | | p: | | v, f, F, s | | x: | | v, f, F, s, C, T |
|
多言語化対応
環境変数
以下の多言語対応変数は、 ar の処理内容に影響します。
| LANG | | LC_ALL および他の LC_* 環境変数が指定されていない場合に、
母国語のロケールカテゴリ、ローカルカスタム、およびコード文字セットを定義します。 LANG が指定されていない場合、または空文字列が指定されている場合、デフォルトの C lang(5) を参照) が LANG の代わりに使用されます。 |
| LC_ALL | | すべてのロケールカテゴリの値を定義し、 LANG および他の LC_* 環境変数よりも優先的に使用されます。 |
| LC_CTYPE | | 文字操作関数のロケールカテゴリを定義します。 |
| LC_MESSAGES | | 標準エラーに書き込まれる診断メッセージのフォーマットおよび内容を変更するために使用するロケールを定義します。 |
| LC_NUMERIC | | 数値フォーマティングのためのロケールカテゴリを定義します。 |
| LC_TIME | | 日付および時刻のフォーマティングに関して、フォーマットと内容を定義します。 |
| NLSPATH | | LC_MESSAGES の処理を行うために、メッセージカタログの位置を定義します。 LC_TIME で、日時文字列のフォーマットと内容を決定します。 |
多言語対応変数のいずれかの設定が不適当な場合には、 ar はすべての多言語対応変数が C に設定されているものとして動作します。 environ(5) を参照してください。
さらに、以下の環境変数は ar の処理内容に影響します。
| TMPDIR | | 一時ファイル (tmpnam(3S) を参照)
用のディレクトリを指定します。 l 修飾子は TMPDIR 変数をオーバーライドし、TMPDIR は、デフォルトのディレクトリ /var/tmp をオーバーライドします。 |
診断
| phase error on file name |
| | | ar がアーカイブにコピーしていた指定ファイルが、別のプロセスによって修正されました。これが発生すると、 ar は終了し、元のアーカイブは修正されないままになります。 |
| ar write error:file system
error message |
| | | ar が、テンポラリファイルまたは最終出力ファイルに書き込めませんでした。 ar が最終出力ファイルを書き込もうとしていた場合には、元のアーカイブは失われます。 |
ar が cannot create file.a とレポートします。 ただし、 file.a がすでに存在しても、 file.a は ar-format アーカイブファイルです。
このメッセージは、 file.a が書き込み保護されているか、またはアクセス不能である場合に出力されます。
例
(そのファイルがまだ存在していなければ) その構成ファイルを指定順に入れてアーカイブフォーマットで新しいファイルを作成します。
ar r newlib.a f3 f2 f1 f4
新しいコピーがファイル f1 の後に、 f3 が f2 の後に続くようにファイル f2 と f3 を置き換えます。
ar ma f1 newlib.a f2 f3
ar ma f2 newlib.a f3
ar r newlib.a f2 f3
次にアーカイブが次のように順序づけられます。
ただし、一重引用符はアップデート済みのファイルを示します。最初のコマンドは「newlib.a の f1 の後に f2 と f3 を移動する」ことを示します。したがって、次の順序を作成します。
f2 と f3 の相対的な順序が変化していないことに注意してください。第 2 のコマンドは「newlib.a の f2 の後に f3 を移動する」ことを示し、次の順序を作成します。
次に、第 3 のコマンドはファイル f2 と f3 を置き換えます。ファイル f2 と f3 の両方がアーカイブにすでに存在したため、このコマンド列を単に次の指定によって置き換えられません。
(コマンド行でどんなファイルを指定しても) アーカイブには f2 および f3 の以前の位置と相対的な順序が保存されるため、次のアーカイブが生成されます。
警告
ユーザーに適切な特権があれば、 ar によって、書き込み保護されているファイルを含めて、すべてのアーカイブファイルを変更することができます。
同じファイルが引き数リストで 2 回指定されると、そのファイルはアーカイブに 2 回入る可能性があります。
アーカイブ内に、1 つのファイルの複数のコピーが存在する場合、 ar は、アーカイブ内の最初のファイルと一致します。
ar はアーカイブ シンボルテーブル、つまり ranlib によって以前の
HP-UX バージョンで行われるタスクを自動的に作成します。 z 修飾子を使用すると、シンボルテーブルを作成しないようにしたり、既存のシンボルテーブルを無効にしたりすることができます。 ranlib コマンドを使用すると、 z 修飾子を使用してアーカイブを作成した場合に、シンボルテーブルを再構築できます。
参照
テキストとチュートリアル:
| 『『HP-UX
Linker and Libraries Online User Guide』』 |
| | | (+help オプションを参照) |
| 『『HP-UX Linker and Libraries User's
Guide』』 |
| | | (注文方法については manuals(5) を参照) |
標準準拠
ar: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2