[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ar [-]p[mod [relpos] [count]] archive [member...] ar -M [ <mri-script ] |
GNU ar
は,アーカイブの作成,変更,そして,それからの抽
出を行います.アーカイブ(archive)とは,(アーカイブのメンバー
(members)と呼ばれる)元となる個々のファイルを取り出すことが可能な構造
のファイル中に,他のファイルの集合を保持している単一のファイルです.
元のファイルの内容,モード(許可),タイムスタンプ,所有者,そしてグルー プは,アーカイブに保存されていて,抽出時に復元することが可能です.
GNU ar
は,任意の長さのメンバー名のアーカイブを管理する
ことが可能です.しかし,ar
がシステムでコンフィグレーションさ
れた方法に依存し,他のツールで管理されるアーカイブのフォーマットの互換
性のため,メンバー名の長さは制限される可能性があります.それが存在する
場合,制限は15文字(a.out に関連するフォーマットの典型)や16文字(coffに
関連するフォーマットの典型)のことが多いでしょう.
この種のアーカイブは,一般に必要なサブルーチンを保持するライブラ
リ(libraries)として最もよく使用されるので,ar
は,バイナリユー
ティリティと考えられます.
ar
は,修飾子`s'を指定したとき,アーカイブの再配置可能な
オブジェクトモジュールに定義されているシンボルに索引を作成します.一度
作成されると,(`q'更新コマンドに対する保存で)ar
がその内
容を変更したときは,アーカイブ内で毎回この索引が更新されます.そのよう
な索引をもつアーカイブは,ライブラリとのリンク速度を上げ,ライブラリの
ルーチンがアーカイブ内の位置に関わらず,お互いの呼び出しを可能にします.
この索引テーブルをリストアップするため,`nm -s'や`nm
--print-armap'を使用してもかまいません.アーカイブに表が無い場合,
ranlib
と呼ばれるar
の別の形式を,表に加えるために使
用することが可能です.
GNU ar
は,二つの異なる機能を用いて互換性があるように設
計されています.Unixシステム上の様々な形態のar
のように,コマ
ンドラインオプションを使用してその作業を制御することが可能です.また,
単一のコマンドラインオプション`-M'を指定した場合,MRI
"librarian"プログラムのように,標準入力を通じて供給されるスクリプト
を用いて,それを制御することが可能です.
1.1 コマンドラインでのar の制御 | Controlling ar on the command line | |
1.2 スクリプトを用いたar の制御 | Controlling ar with a script |
ar
の制御
ar [`-X32_64'] [`-']p[mod [relpos] [count]] archive [member...] |
Unix形式でar
を使用するとき,ar
は少なくとも二つの引
数を実行時に要求します.operationを指定するキー文字
(modifiersを指定するその他のキー文字がオプションで付きます)と,
動作対象のアーカイブ名です.
ほとんどの処理は,それ以外にmember引数を受け入れ,それは処理の対 象となる特定のファイル名を指定します.
GNU ar
では,最初のコマンドライン引数内で,処理コード
pと修飾フラグmodを,あらゆる順序で混ぜることが可能です.
好みにより,最初のコマンドライン引数をダッシュで始めてもかまいません.
pキー文字は,実行する処理を指定します.それは以下のいずれでもか まいませんが,その中の一つだけを指定する必要があります.
`v'修飾子を指定した場合,ar
は削除するそれぞれのモジュー
ルをリストアップします.
シンボルが一つ以上のメンバーで定義されている場合,アーカイブ内のメンバー の順序で,ライブラリを使用してプログラムがリンクされる方法に差異が発生 するはずです.
m
とともに修飾子を使用しない場合,member引数で指名したすべ
てのメンバーは,アーカイブの終りに移動されます.そうする代わり
に,指定した位置にそれらを移動するために,`a',`b',または
`i'修飾子を使用することが可能です.
member引数を指定していない場合,アーカイブのすべてのファイルが出 力されます.
修飾子`a',`b',そして`i'は,このオプションに効果は ありません.新しいメンバーは常にアーカイブの終りに配置されます.
修飾子`v'で,ar
は追加されるそれぞれのファイルをリストアッ
プします.
この処理の要点は速度なので,アーカイブのシンボル表の索引が存在している
場合でも更新されません.シンボル表の索引を更新するために,`ar s'
またはranlib
を明示的に使用することが可能です.
しかし,あまりに多くの様々なシステムで,高速追加が索引を再構築すること
を仮定されていので,GNU ar
は,q
をr
の同義
語として実装されています.
member...で指名されたファイルが一つでも存在しない場合,
ar
はエラーメッセージを表示し,名前がアーカイブと一致する既存
のメンバーはそのままになります.
デフォルトで,新しいメンバーはファイルの終りに追加されます.しかし,既 存のメンバーとの相対位置を要求するため,修飾子`a',`b',また は`i'の一つを使用してもかまいません.
この処理で修飾子`v'を使用すると,挿入されたそれぞれのファイルを出 力の一行に書き出し,ファイルが追加された(古いメンバーが削除されていな い)のか,置換されたのかを示す文字`a'または`r'のどちらかを追 加します.
memberを指定しない場合は,アーカイブ内のすべてのファイルがリスト アップされます.
同じ名前の(`fie'という名の)ファイルが,(`b.a'をいう名の)アー カイブに一つ以上ある場合,`ar t b.a fie'は最初のインスタンスのみ リストアップします.すべてを見るために,完全なリストを要求する必要があ ります -- この例では`ar t b.a'です.
ar
が抽出しているそれぞれの名前をリストアップするように,この
処理で`v'修飾子を使用することが可能です.
memberを指定しない場合,アーカイブのすべてのファイルが抽出されま す.
処理の動作の変更を指定するため,いくつかの修飾子(mod)をpキー 文字の直後に続けてもかまいません.
ar
は,通常は任意の
長さのファイル名を許可します.これは,いくつかのシステムのネイティブ
ar
プログラムと互換性のないアーカイブを作成します.これが懸念
される場合,アーカイブに配置するときファイル名を切り詰めるために,
`f'修飾子を使用してもかまいません.
ar
はフルパス名を持つアーカイブ(そのようなアーカイブは,POSIXで問題ない)
を作成することは不可能ですが,アーカイブを作成するものには,そうするこ
とが可能なものもあります.このオプションで,GNU ar
はフ
ルパス名を使用しているファイル名にマッチし,それは,他のツールで作成さ
れたアーカイブから単一のファイルを抽出するとき便利でしょう.
ar
のバージョンナンバーを表示します.
ar
は,AIXに対する互換性のため,`-X32_64'と綴られた最初
のオプションを無視します.このオプションによって引き起こされる動作は,
GNU ar
のデフォルトです.ar
は,その他の
`-X'オプションを全くサポートしません.特に,AIX ar
では
デフォルトとなる`-X32'はサポートしません.
ar
の制御
ar -M [ <script ] |
単一のコマンドラインオプション`-M'をar
で用いた場合,
基礎的なコマンド言語でその処理を制御することが可能です.ar
の
この形式は,標準入力が端末から直接来ている場合,対話的に処理します.対
話的に使用している間,ar
は入力を促し(プロンプトは`AR
>'),エラー後も実行を続けます.標準入力をスクリプトファイルにリダイレ
クトしている場合,プロンプトは表示されず,ar
はエラーが発生す
ると(ゼロでない終了コードで)実行を終了します.
ar
コマンド言語は,コマンドラインオプションと等価に設計されて
いません.実際,それはアーカイブ上の制御が若干少なくなっていま
す.コマンド言語の目的は,MRI "librarian"プログラムに対して書かれた
スクリプトを既に所有している開発者が,GNU ar
への変換を
より簡単にすることです.
ar
コマンド言語の構文は簡単です.
LIST
はlist
と同じです.以下の記述では,明確さのためにコマンドは大文字で表示します.
ar
コマンドの引数の一部として名前のリストを使用するときは,カ
ンマまたは空白で,それぞれの名前を分けることが可能です.明確さのため,
以下の説明はカンマで表現されます.
以下のものは,ar
で使用することが可能な,または,ar
を対話的に使用しているときのコマンドです.そのうちの三つは特別な意味を
持ちます.
OPEN
やCREATE
は現在のアーカイブ(current archive)を
指定し,それはそれ以外のほとんどのコマンドが要求する一時的なファイルで
す.
SAVE
は,スクリプトでこれまでに指定された変更をコミットします.
SAVE
の前のコマンドは,現在のアーカイブの一時的なコピーに対して
のみ効果があります.
ADDLIB archive
ADDLIB archive (module, module, ... module)
OPEN
やCREATE
を前もって使用することが要求されます.
ADDMOD member, member, ... member
OPEN
やCREATE
を前もって使用することが要求されます.
CLEAR
SAVE
されてからのあらゆる
処理の効果を無効にします.現在のアーカイブが指定されていない場合でも実
行可能です(効果はありません).
CREATE archive
SAVE
を使用するまで,archiveとして実際に保
存されません.既存のアーカイブに優先可能です.同様に,指名されている既
存のarchiveファイルの内容は,SAVE
まで破壊されません.
DELETE module, module, ... module
OPEN
やCREATE
を前もって使用することが要求されます.
DIRECTORY archive (module, ... module)
DIRECTORY archive (module, ... module) outputfile
VERBOSE
で,出力形式を指定します.冗長出力
がオフのとき,出力は`ar -t archive module...'のよ
うになります.冗長出力がオンのとき,リストは`ar -tv archive
module...'のようになります.
出力は通常,標準出力に流れていきます.しかし,outputfileを最後の
引数として指定した場合,ar
はそのファイルに出力を変更します.
END
ar
を,正しく完了したことを示す終了コード0
で終了します.
このコマンドは出力ファイルを保存しません.最後のSAVE
コマンド以
降に現在のアーカイブを変更した場合.これらの変更は失われます.
EXTRACT module, module, ... module
OPEN
やCREATE
を前もって使用することが要求されます.
LIST
VERBOSE
の状態に関わらず,
"verbose"形式で表示します.効果は`ar tv archive'に似てい
ます.(この単独コマンドはGNU ar
拡張で,MRI互換に提供さ
れているものではありません).
OPEN
やCREATE
を前もって使用することが要求されます.
OPEN archive
SAVE
が使用されるまで,archiveに対し実際に効果
はありません.
REPLACE module, module, ... module
REPLACE
の引数で指名された)既存の
moduleを,現在のワーキングディレクトリのファイルで置換します.エ
ラー無くこのコマンドを実行するために,ファイルと現在のアーカイブのモ
ジュールの両方が存在する必要があります.
OPEN
やCREATE
を前もって使用することが要求されます.
VERBOSE
DIRECTORY
からの出力を管理している内部フラグを切り替えます.フラ
グがオンのとき,DIRECTORY
出力は,`ar -tv '...からの出
力に一致します.
SAVE
CREATE
や
OPEN
コマンドで指定された名前のファイルに,実際に保存します.
OPEN
やCREATE
を前もって使用することが要求されます.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |