ライブラリ マネージャ: TLIB.EXE

提供: RAD Studio
移動先: 案内検索

コマンドライン ユーティリティ:インデックス への移動


TLIB は、.OBJ(オブジェクト モジュール)ファイルのライブラリを管理するユーティリティです。 ライブラリは、オブジェクト モジュールの集合を 1 つの単位として扱うのに便利です。

C++Builder のコンパイラに付属のライブラリは TLIB でビルドされています。 TLIB を使うと、独自のライブラリをビルドしたり、C++Builder のライブラリや、自分のライブラリ、他のプログラマから提供されたライブラリ、購入した市販のライブラリの一部を修正したりすることができます。

TLIB を使って既存のライブラリを修正する場合、TLIB は元のライブラリのコピーを作成して .BAK という拡張子を付けます。

TLIB を使うと次のことが可能になります。

  • 一連のオブジェクト モジュールから新しいライブラリを作成する。
  • オブジェクト モジュールや別のライブラリを既存のライブラリに追加する。
  • 既存のライブラリからオブジェクト モジュールを削除する。
  • 既存のライブラリのオブジェクト モジュールを置換する。
  • 既存のライブラリからオブジェクト モジュールを抽出する。
  • 新規または既存のライブラリの内容のリストを作成する。

TLIB では、拡張ディクショナリを作成し(、ライブラリ ファイルに追加し)ます。このディクショナリを使ってリンクの速度を向上することができます。

TLIB は、BCC32.EXE コンパイラで実行可能プログラムを作成するために必ず必要というわけではありませんが、プログラミングの生産性を向上するのに有効なツールであり、大規模開発プロジェクトには不可欠です。


コマンドライン構文

TLIB <libname> [<options>] [<operations>] [@<respfile>] [, <listfile>] 


コマンドライン要素

TLIB コマンドラインで使用できる要素は次のとおりです。

要素 説明
<libname>

<libname> は、作成または管理対象のライブラリのパス名です。 <libname> は必ず指定しなければなりません。
ワイルドカードは使えません。 拡張子が指定されていない場合、TLIB は、拡張子が .LIB であると想定します。
BCC32 および IDE は .LIB 拡張子でなければライブラリ ファイルを認識できないため、.LIB 拡張子だけを使用してください。
メモ: 名前を指定したライブラリが存在せず、追加操作が指定されている場合には、TLIB はライブラリを作成します。

<options>

TLIB には、/C/L/P/O/N/0/8一般コマンドライン オプションと、/a/d/e/u/xデフォルト アクション オプションを指定できます。 デフォルト アクション オプションでは、明示的にコマンドが指定されていないすべてのモジュールに適用されるアクションを指定します。 デフォルト アクション オプションを使用すると、TLIB コマンドでモジュールを指定するときに、各モジュールの前にアクション シンボルを指定する必要がなくなります。

<operations>

指定したモジュールに対して TLIB で実行したいコマンドを記述します。 各コマンドは、1 文字または 2 文字の操作コードの後にファイル名またはモジュール名を続けたものです。

<symbol> modulename

ライブラリの内容を確認するだけの場合は、コマンドを指定しないでください。 詳細は、このトピックの以下にある「操作」を参照してください。

@<respfile>

<respfile> は、取り込みたい応答ファイルのパスと名前です。 複数の応答ファイルを指定できます。 詳細は、このトピックの以下にある「応答ファイル」を参照してください。

<listfile>

<listfile> は、TLIB がライブラリの内容のリストを保持するために作成するテキスト ファイルの名前です。 <listfile> を指定する場合には、必ずファイル名の前にコンマを入力してください。 ファイル名を指定しないと、リストは作成されません。 このリストは、各モジュールをアルファベット順に並べたリストです。 各モジュールのエントリには、そのモジュールで定義されている各パブリック シンボルをアルファベット順に並べたリストが出力されます。 このリスト ファイルのデフォルトの拡張子は .LST です。

コマンドラインのヘルプを表示するには、次のように入力します。

tlib

または

tlib -?

一般コマンドライン オプション

TLIB は、次の一般コマンド オプションを認識します。

TLIB の一般コマンド オプション

オプション 説明

/PSIZE

規模の大きいライブラリを作成する場合に、ライブラリ ページ サイズを SIZE に設定します。

ライブラリ ページ サイズによって、ライブラリ内の全オブジェクト モジュールを合わせた最大サイズが決まります(これは 65,536 ページ以下でなければなりません)。 デフォルトの(かつ最小の)ページ サイズは 16 バイトで、その場合のライブラリの最大サイズは約 1 MB です。 それよりも大きいライブラリを作成するには、/PSIZE オプションを指定してページ サイズを SIZE に増やします。 ページ サイズは 2 の累乗で、16 以上 32,768 以下でなければなりません。

ライブラリ内の全モジュールは、ページ境界から開始する必要があります。 たとえば、ページ サイズが 32(デフォルトの 16 の次に小さい有効なページ サイズ)のライブラリでは、オブジェクト モジュールごとに平均して 16 バイトがパディングのために無駄になります。 大きすぎて指定したページ サイズでは収まらないライブラリを作成しようとすると、TLIB はエラー メッセージを出し、/PSIZE を使って次に大きい有効なページ サイズを指定するよう提案します。

/L

<listfile> のリスト ファイルを標準出力 stdout に書き出します。

/N

コマンド構文のサポートを無効にします。

/O

コマンド構文のサポートを有効にします。

/0

コメント レコードを完全削除します。

/8

警告とメッセージを UTF8 エンコードで表示します。

/C

ライブラリ内のシンボルの大文字/小文字を区別するように設定します。 通常はこのオプションを使用しません。

モジュールをライブラリに追加する際、TLIB は、ライブラリのモジュールで定義されたすべてのパブリック シンボルのディクショナリを保守します。 ライブラリ内のすべてのシンボルを区別できる必要があります。 モジュールをライブラリに追加しようとしたときにシンボルが重複していると、TLIB からエラー メッセージが表示され、モジュールは追加されません。

通常、TLIB でライブラリ内のシンボルが重複していないかを確認するときには、大文字と小文字は別のものとして扱われません。 たとえば、lookup というシンボルと LOOKUP というシンボルは、重複していると見なされます。 /C オプションを指定すると、大文字/小文字の違いしかないシンボルを含んだモジュールをライブラリに追加することができます。

別のリンカでライブラリを処理したり他の人がライブラリを使ったりする予定がある場合には、/C を使わないでください。

大文字/小文字の違いしかないシンボルを TLIB が通常は受け入れないのは、大文字/小文字を区別しないリンカがあるからです。 ILINK32 では大文字のシンボルと小文字のシンボルを問題なく区別できます。 作成したライブラリを ILINK32 でしか使わないなら、TLIB /C オプションを使用しても問題はありません。


デフォルト アクション オプション

デフォルト アクション オプションを使って、1 つまたは複数のアクションを指定できます。これらのアクションは、明示的なコマンドを指定されていない、これに続くすべてのモジュールに対して、または、別のアクション フラグが設定されるまで使用されます。 デフォルト アクション オプションを使用すると、各モジュールの前にコマンドまたはアクション シンボルを指定しなくても、TLIB コマンドでモジュールを指定できます。 TLIB のデフォルト アクション オプションは、「操作」で説明されている TLIB のアクション フラグが実行するアクションと、同様のアクションを実行します。

TLIB は、次のデフォルト アクション オプションを認識します。

TLIB のデフォルト アクション オプション

オプション 説明

/a

ライブラリにモジュールを追加します。

/d

ライブラリからモジュールを削除します。

/e

モジュールを削除せずに抽出します。

/u

ライブラリのモジュールを置き換えます。

/x

モジュールを抽出し、削除します。


操作

<operations> のリストには、指定したモジュールに対して TLIB で行いたいアクションを、一連の操作を並べて指定します。 各操作は、1 文字または 2 文字のアクション シンボルと、その後のファイル名またはモジュール名から構成されます。

<symbol> modulename

アクション シンボル <symbol> やモジュール名 modulename の前後に空白文字を入れることはできますが、2 文字のアクションの間に入れてはなりません。 コマンド ラインには、必要なだけ多くの操作を指定することができます。 操作の順番は重要ではありません。 TLIB は操作を必ず規定の順番で行います。

  1. まずすべての抽出操作が行われます。
  2. 次にすべての削除操作が行われます。
  3. 最後にすべての追加操作が行われます。

モジュールを置換する場合は、まず削除し、それから代わりのモジュールを追加します。

TLIB は、指定されたファイル名からドライブ、パス、および拡張子の情報を取り除いて、モジュール名を判断します。

TLIB では常に妥当なデフォルト値が想定されます。 たとえば、カレント ディレクトリにある .OBJ という拡張子のモジュールを追加する場合、指定する必要があるのはモジュール名だけであり、パスや .OBJ 拡張子は必要ありません。

ファイル名やモジュール名にワイルドカードを使用することはできません。

アクション シンボル

TLIB は 3 つのアクション シンボル(*+-)を認識します。これらを単独で、あるいは 2 つ組み合わせて使うことで、合計 5 つの異なる操作を行うことができます。 2 つの文字を使う操作を指定する場合、文字の順番は重要ではありません。

ライブラリを作成するには、まだ存在しないライブラリにモジュールを追加します。

サポートされているアクション操作

シンボル 名前 説明

+

追加

TLIB は、名前を指定したファイルをライブラリに追加します。 ファイル名に拡張子が付いていない場合、TLIB は拡張子が .OBJ であると想定します。 ファイル自体がライブラリ(拡張子 .LIB)であれば、指定したライブラリ内のすべてのモジュールが追加先のライブラリに追加されます。 追加対象のモジュールが既に存在する場合、TLIB はメッセージを表示し、新しいモジュールの追加を行いません。

-

削除

TLIB は、名前を指定したモジュールをライブラリから削除します。 ライブラリ内にそのモジュールが存在しなければ、TLIB はメッセージを表示します。 削除操作で必要なのはモジュール名だけです。 TLIB にドライブや拡張子を含む完全パス名を入力することは可能ですが、モジュール名以外はすべて無視されます。

*

抽出

TLIB は、指定した名前のファイルを作成し、対応するモジュールをライブラリからそのファイルにコピーします。 モジュールが存在しなければ、TLIB はメッセージを表示し、ファイルを作成しません。 名前を指定したファイルが既に存在すれば、そのファイルは上書きされます。 ライブラリ内のモジュールの名前を直接変更することはできません。 モジュール名を変更するには、抽出して削除し、作成されたファイルの名前を変更し、それを元のライブラリに追加してください。

-* または *-

抽出および削除

TLIB は、名前を指定したモジュールをライブラリからファイルにコピーします。 モジュールが存在しなければ、TLIB はメッセージを表示し、ファイルを作成しません。 名前を指定したファイルが既に存在すれば、そのファイルは上書きされます。 TLIB はファイル名を削除し、その後ライブラリから削除します。

-+ または +-

置換

TLIB は、名前を指定したモジュールを対応するファイルで置換します。


応答ファイル

応答ファイルとは、TLIB コマンドの全体または一部を含む ASCII テキスト ファイルです。 TLIB 応答ファイルを使うと、1 行のコマンドラインよりも長い TLIB コマンドを構築することができます。 多数の操作を行ったり操作を複数回行ったりする必要がある場合には、応答ファイルを使うと作業が楽になります。

応答ファイルを使うと以下のことが可能になります。

  • 1 行を超えるテキストを含めることができます。行末にアンパサンド(&)を記入し、次の行に続くことを示してください。
  • コマンドの一部分のリストを含めることができます。 コマンドラインのオプションと応答ファイルのオプションを組み合わせられます。
  • 1 つのTLIB コマンドラインで他の応答ファイルと組み合わせて使用することができます。


TLIB で実行できるさまざまな事柄の一部を、簡単な例を挙げて説明します。

例 1

モジュール X.OBJ、Y.OBJ、Z.OBJ を含む MYLIB.LIB というライブラリを作成するには、次のように入力します。

tlib mylib +x +y +z

例 2

MYLIB.LIB というライブラリを作成し、MYLIB.LST へのリストの出力を行うには、次のように入力します。

tlib mylib +x +y +z, mylib.lst

例 3

既存のライブラリ CS.LIB のリストを CS.LST に出力するには、次のように入力します。

tlib cs, cs.lst

例 4

MYLIB.LIB に対して、モジュール X.OBJ を新しいものに置換し、A.OBJ を追加し、Z.OBJ を削除するには、次のように入力します。

tlib mylib -+x +a -z

例 5

MYLIB.LIB からモジュール Y.OBJ を抽出し、リストを MYLIB.LST に出力するには、次のように入力します。

tlib mylib *y, mylib.lst

例 6

応答ファイルを使って、モジュール A.OBJ、B.OBJ、...、G.OBJ を含む ALPHA という新規ライブラリを作成するには、以下を行います。

  1. まず、次の文字列を含むテキスト ファイル ALPHA.RSP を作成します。
+a.obj +b.obj +c.obj & +d.obj +e.obj +f.obj & +g.obj
  1. 次に、以下の TLIB コマンドを実行します。ここでは ALPHA.LST というリスト ファイルが作成されます。
tlib alpha @alpha.rsp, alpha.lst

例 7

MYLIB.LIB に対して、モジュール Y.OBJ および Z.OBJ を更新し、モジュール A.OBJ および B.OBJ を削除するには、次のように入力します。

tlib mylib /u Y.obj Z.obj /d A.obj B.obj