| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 4 : ファイルフォーマット > aar(4)HP-UX 11i Version 2: September 2004 |
|
名称ar ― 共通アーカイブファイル フォーマット 説明ar コマンドは、複数のファイルを連結し、 アーカイブファイルを作ります ( ar(1) を参照)。 アーカイブは、主にリンクエディタ ( ld(1) を参照) によって探索されるライブラリとして用いられます。 すべてのアーカイブは アーカイブマジック文字列 から始まります。 #define ARMAG "!<arch>\n" /* magic string */ アーカイブマジック文字列の次に、 アーカイブファイル メンバーがあります。 各ファイルメンバーの前には、 次のようなフォーマットのファイルメンバー ヘッダがあります。 #define ARFMAG "\`\n" /* header trailer string */ ファイルメンバー ヘッダの中にある情報は すべて、印字可能な ASCII 形式の 文字列です。 ヘッダの中の数字の情報は、 10 進数で格納されています。 ( ar_mode は例外で、これは 8 進数です)。 したがって、プリント可能なファイルを含むアーカイブは、 アーカイブ全体がプリント可能です。 ar_name フィールドの内容はスラッシュ (/) で終わり、空白で埋められます。 ar_date フィールドは、 ファイルがアーカイブに入れられた時点での、 そのファイルの変更時間です。 移植可能な アーカイブコマンド ar が使われている限り、 共通フォーマットアーカイブは システムからシステムに移すことができます。 古いバージョンの ar は共通アーカイブフォーマットを 使っていないこと、そして、そのアーカイブは 共通アーカイバーで読み書きできないことに注意してください。 すべてのアーカイブファイル メンバーは、 偶数バイト境界から始まっている必要があります。 もし必要なら、ファイルメンバーの間には、ニューライン文字 が挿入されます。 しかし、パディングされていてもファイルのサイズは、 実際のファイルのサイズを正確に反映しています。 アーカイブファイルの空の 部分に関しては、何も規定されていません。 アーカイブ シンボルテーブルが存在した場合、 そのアーカイブの最初のファイルは、 長さ 0 の名前を持っています (すなわち、 ar_name[0] == '/' および ar_name[1] == ' ' となっています)。 このアーカイブメンバーの内容は 機種に依存しています。 詳しくは、該当する a.out(4) マニュアルエントリーを参照してください。 オブジェクトファイル (a.out(4) を参照) を格納しているアーカイブ は、アーカイブ シンボルテーブル を持っている場合があります。 このシンボルテーブルは リンクエディタ (ld(1) を参照) がリンクエディットの処理を行っている時に、 どのアーカイブメンバーをロードする必要があるか を判断するのに使われます。 アーカイブ シンボルテーブルは、(もし存在するなら) 常にアーカイブ の中の最初のメンバーになっています (しかしリストされることはありません)。 そしてこのテーブルは、(ar によって自動的に生成され、アップデートされます。 アーカイブ内に 16 バイト以上のファイル名を持つメンバーが存在する場合、アーカイブには、長いファイル名の文字列テーブルを保存するための特殊なメンバーも含まれています。特殊な文字列テーブルメンバーの名前はゼロバイトで、 ar_name[0] == '/' および ar_name[1] == '/' です。 特殊な文字列テーブルが存在する場合、あらゆる通常のアーカイブメンバーよりも 優先的に使われます。シンボルテーブル メンバーと文字列テーブルメンバーが存在する場合は、必ずシンボルテーブル メンバーが優先的に使われます。 文字列テーブルの各エントリーの後には、スラッシュと改行文字が続きます。 テーブルのオフセットはゼロから開始します。アーカイブメンバーの名称 が 16 バイト以上の場合、メンバーのヘッダ内のエントリ ar_name には名称が含まれず、代わりに、スラッシュの後に文字列テーブルとのオフセットが 記述されたものが含まれます。 例えば、メンバー名が thisverylongfilename.o の場合、ar_name フィールドには /0 が含まれます。この値は、文字列テーブルとのオフセットを表します。 メンバー名が yetanotherlongfilename.o の場合、ar_name フィールドには /27 が含まれます。 長い名称の文字列テーブルのフォーマットは以下のとおりです。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||