llvm-ar - LLVM アーカイバ

概要

llvm-ar [-]{dmpqrstx}[abcDilLNoOPsSTuUvV] [relpos] [count] archive [files…]

説明

llvm-arコマンドは、一般的なUnixユーティリティであるarコマンドに似ています。オブジェクトファイルやLLVMビットコードファイルなど、複数のファイルを単一のアーカイブライブラリにアーカイブし、プログラムにリンクすることができます。ただし、アーカイブにはあらゆる種類のファイルを含めることができます。llvm-arは、デフォルトでシンボルテーブルを生成します。これにより、個々のアーカイブメンバーファイルを参照する必要がなく、シンボルテーブルのみを参照すればよいため、リンク速度が向上します。

llvm-arコマンドは、SVR4、GNU、BSD、Big Archive、Darwin形式のアーカイブファイルの読み込み、およびGNU、BSD、Big Archive、Darwin形式のアーカイブファイルの書き込みに使用できます。 r(置換)、d(削除)、m(移動)、またはq(クイックアップデート)操作でSVR4形式のアーカイブを使用する場合、アーカイブは--formatで定義された形式で再構築されます。

ここでllvm-arは以前のar実装とは異なります。

次のオプションはサポートされていません。

[f] - 挿入されたファイル名を切り捨てる

互換性のために次のオプションは無視されます。

--plugin=<string> - その他のファイル形式のサポートを追加するプラグインをロードする

[l] - arで無視されます。

シンボルテーブル

llvm-arはビットコードファイルをサポートしているため、作成されるシンボルテーブルには、ネイティブシンボルとビットコードシンボルの両方が含まれます。

決定論的アーカイブ

デフォルトで、llvm-arは常にタイムスタンプとUID/GIDにゼロを使用して、決定論的なモードでアーカイブを書き込みます。これは、D修飾子がデフォルトで有効になっていることと同じです。他のar実装との互換性を維持したい場合は、U修飾子を渡して、実際のタイムスタンプとUID/GIDを書き込むことができます。

Windowsパス

Windowsでは、llvm-arは、アーカイブされたファイルの名前を、オペレーティングシステムと同じ大文字小文字を区別する方式で扱います。Windows以外のマシンでは、llvm-arは大文字小文字を区別しません。

オプション

llvm-ar操作は、他のar実装と互換性があります。ただし、他のar実装にはない修飾子(L)がいくつかあります。llvm-arのオプションは、アーカイブに対して実行する1つの基本的な操作、その操作に対するさまざまな修飾子、アーカイブファイルの名前、およびオプションのファイル名のリストを指定します。filesオプションが指定されていない場合、操作に応じて一般的に「なし」または「すべて」のメンバーを意味します。オプション、操作、および修飾子は、以下のセクションで説明されています。

最小限のオプションセットは、少なくとも1つの演算子とアーカイブの名前です。

操作

d [NT]

archiveからファイルを削除します。NおよびT修飾子がこの操作に適用されます。filesオプションは、アーカイブから削除するメンバーを指定します。指定されたファイルがアーカイブに存在しない場合もエラーになりません。filesが指定されていない場合、アーカイブは変更されません。

m [abi]

archive内の場所から別の場所にファイルを移動します。ab、およびi修飾子がこの操作に適用されます。filesはすべて、修飾子によって指定された場所に移動されます。修飾子が使用されていない場合、ファイルはアーカイブの最後に移動されます。filesが指定されていない場合、アーカイブは変更されません。

p [v]

filesを標準出力ストリームに出力します。filesが指定されていない場合、archive全体が出力されます。v修飾子を使用すると、llvm-arは出力されるファイルの名前も出力します。バイナリファイルを出力することはお勧めしません。ターミナルの設定が混乱する可能性があります。p操作は、アーカイブを変更することはありません。

q [LT]

重複を削除せずに、archiveの最後にファイルをすばやく追加します。filesが指定されていない場合、アーカイブは変更されません。1つのアーカイブを別のアーカイブに追加する場合の動作は、LおよびT修飾子が使用されているかどうかに依存します。

  • 通常のアーカイブを通常のアーカイブに追加すると、アーカイブファイルが追加されます。L修飾子が指定されている場合、代わりにメンバーが追加されます。

  • 通常のアーカイブを薄いアーカイブに追加するには、T修飾子が必要であり、アーカイブファイルが追加されます。L修飾子はサポートされていません。

  • 薄いアーカイブを通常のアーカイブに追加すると、アーカイブファイルが追加されます。L修飾子が指定されている場合、代わりにメンバーが追加されます。

  • 薄いアーカイブを薄いアーカイブに追加すると、常にメンバーがすばやく追加されます。

r [abTu]

既存のfilesを置換するか、存在しない場合はarchiveの最後に挿入します。abT、およびu修飾子がこの操作に適用されます。filesが指定されていない場合、アーカイブは変更されません。

t[v] .. option:: t [vO]

目次を出力します。修飾子がない場合、この操作はメンバーの名前を標準出力ストリームに出力するだけです。v修飾子を使用すると、llvm-arはファイルの種類(B=ビットコード、S=シンボルテーブル、空白=通常のファイル)、アクセス許可モード、所有者とグループ(filesを抽出する際無視され、サイズを追加する際にプレースホルダー値に設定される)、日付も出力します。O修飾子を使用すると、メンバーのオフセットを表示します。filesが指定されている場合、リストはそれらのファイルのみになります。filesが指定されていない場合、アーカイブ全体の目次が出力されます。

V

--versionオプションの同義語です。

x [oP]

archiveメンバーをファイルに抽出します。o修飾子がこの操作に適用されます。この操作は、指定されたfilesをアーカイブから取得し、オペレーティングシステムのファイルシステムに書き戻します。filesが指定されていない場合、アーカイブ全体が抽出されます。

修飾子(操作固有)

以下の修飾子は、特定の操作に固有です。どの修飾子がどの操作に適用可能かは、「操作」セクションを参照してください。

a

メンバーファイルの挿入または移動時に、このオプションは新規ファイルの宛先をrelposメンバーの後であることを指定します。relposが見つからない場合、ファイルはarchiveの末尾に配置されます。relposは、ab、またはiのいずれかがないと使用できません。

b

メンバーファイルの挿入または移動時に、このオプションは新規ファイルの宛先をrelposメンバーの前であることを指定します。relposが見つからない場合、ファイルはarchiveの末尾に配置されます。relposは、ab、またはiのいずれかがないと使用できません。この修飾子はi修飾子と同一です。

i

bオプションの同義語です。

L

archiveを高速追加する際に、そのメンバーを高速追加する代わりに使用します。これは、gnu-arにはないllvm-arの機能です。

N

別のメンバーと名前が同じメンバーを抽出または削除する際、countパラメータを使用すると、正の整数を指定して、指定した名前のインスタンスを選択できます。「1」は最初のインスタンスを示します。Nが指定されていない場合、その名前の最初のメンバーが選択されます。countが指定されていない場合、操作は失敗します。*count*は…

o

ファイルを抽出する際に、archiveに表示されているとおりに、任意のfilesの変更時刻を使用します。デフォルトでは、アーカイブから抽出されたfilesは抽出時刻を使用します。

O

アーカイブ内のメンバーオフセットを表示します。

T

--thinのエイリアスです。多くのar実装では、X/Openシステムインターフェースで指定されているように、Tは異なる意味を持ちます。

v

filesまたはarchiveの目次を出力する際に、この修飾子はllvm-arに追加情報を表示するように指示します。

修飾子(汎用)

以下の修飾子は、任意の操作に適用できます。

c

r(置換)およびq(高速更新)操作の場合、llvm-arは存在しない場合常にアーカイブを作成します。通常、llvm-ararchiveが作成されていることを示す警告メッセージを出力します。この修飾子を使用すると、その警告が無効になります。

D

タイムスタンプとUID/GIDにゼロを使用します。これはデフォルトで設定されています。

P

ファイル名だけでなく、完全パスを使用してメンバー名に一致させます。これは、他のアーカイバによって生成されたarchiveを操作する場合に役立ちます。一部のアーカイバでは、パスをメンバー名として許可しているためです。これは、シンアーカイブのデフォルトの動作です。

s

この修飾子は、ranlibを使用した場合と同様に、アーカイブインデックス(またはシンボルテーブル)をarchiveに追加することを要求します。シンボルテーブルには、アーカイブ内のすべてのビットコードファイルによって定義されている、外部から見えるすべての関数とグローバル変数が含まれます。llvm-arはデフォルトでアーカイブにシンボルテーブルを生成します。これは操作としても使用できます。

S

この修飾子はs修飾子の反対です。llvm-arにシンボルテーブルを構築しないように指示します。sSの両方が使用されている場合、オプションで最後に発生した修飾子が優先されます。

u

より新しいタイムスタンプを持つfilesのみをarchiveメンバーを更新します。

U

実際のタイムスタンプとUID/GIDを使用します。

その他

--format=<type>

このオプションでは、デフォルト、gnu、darwin、bsd、またはcoffの<type>を選択できます。デフォルトの<type>archiveを作成する場合、:program:llvm-arは入力ファイルからそれを推測しようと試み、実行できない場合はデフォルトのツールチェーントンネルターゲットにフォールバックします。

-h, --help

コマンドラインオプションとその意味のサマリーを出力します。

-M

このオプションを使用すると、標準入力ストリームを介してMRIスクリプトを読み取ることができます。このオプションとは互換性のない他のオプションはありません。

--output=<dir>

アーカイブメンバーを抽出するディレクトリを指定します。デフォルトでは、現在の作業ディレクトリが使用されます。

--rsp-quoting=<type>
この オプションは、応答ファイルの引用スタイル``<type>``を選択します。 ``posix``または``windows``のいずれかです。 either
``posix`` または``windows``です。 Windowsではデフォルトは``windows``、 otherwise
default は``posix``です。
--thin

アーカイブの作成または変更時に、このオプションはarchiveがシンであることを指定します。デフォルトでは、アーカイブはシンアーカイブとして作成されず、シンアーカイブを変更すると、通常のアーカイブに変換されます。

--version

llvm-ar実行ファイルのバージョンを表示します。

-X mode

処理するオブジェクトファイルの種類を指定します。llvm-arは、以下のいずれかのモードで動作します。

32

32ビットオブジェクトファイルのみを処理します。

64

64ビットオブジェクトファイルのみを処理します。

32_64

32ビットおよび64ビットオブジェクトファイルの両方を処理します。

any

全てのオブジェクトファイルを処理します。

デフォルトでは、32ビットオブジェクトファイルを処理し(64ビットオブジェクトは無視します)、OBJECT_MODE環境変数でも設定できます。例えば、OBJECT_MODE=64と設定すると、arは64ビットオブジェクトを処理し、32ビットオブジェクトは無視します。-XフラグはOBJECT_MODE変数を上書きします。

@<FILE>

レスポンスファイル<FILE>からコマンドラインオプションとコマンドを読み込みます。

MRIスクリプト

llvm-arは、arの伝統に従うアーカイバで一般的にサポートされているMRIスクリプトインタフェースの一部を理解します。MRIスクリプトには、アーカイバによって実行される一連のコマンドが含まれています。-Mオプションを使用すると、標準入力ストリームを介してllvm-arにMRIスクリプトを渡すことができます。

注意:llvm-arには、MRIスクリプトの使用に関する既知の制限事項があります。

  • 各スクリプトは、1つのアーカイブしか作成できません。

  • 既存のアーカイブは変更できません。

MRIスクリプトコマンド

各コマンドはコマンド名で始まり、それぞれ独自の行に記述する必要があります。一部のコマンドには引数があり、名前と空白で区切る必要があります。MRIスクリプトは、CREATEまたはCREATETHINコマンドで始まり、通常はSAVEコマンドで終わります。'*'または';'の後のテキストはコメントとして扱われます。

CREATE archive

指定された名前で通常のアーカイブの作成を開始します。後続のコマンドはこのarchiveに対して作用します。

CREATETHIN archive

指定された名前でシンアーカイブの作成を開始します。後続のコマンドはこのarchiveに対して作用します。

ADDLIB archive

archiveの内容を現在のアーカイブに追加します。

ADDMOD <file>

<file>を現在のアーカイブに追加します。

DELETE <file>

ディレクトリコンポーネントを除いたファイル名が<file>と一致する、現在のアーカイブのメンバを削除します。

SAVE

前のCREATE/CREATETHINコマンドで指定されたパスに現在のアーカイブを書き込みます。

END

MRIスクリプトを終了します(オプション)。

終了ステータス

llvm-arが成功すると、0で終了します。エラーが発生すると、0以外の値で終了します。