2.4 ar(1) - ライブラリの作成および操作
【機能説明】
ライブラリファイルを作ることで、複数のオブジェクトファイルを
1つのファイルにまとめあげる事が出来ます。
ライブラリには2種類の方式があり、「静的なリンク」というメカニズムを用いた
アーカイブと、「動的なリンク」に用いられるシェーアードオブジェクト
(またはシェアードライブラリ)があります。
一般にアーカイブは .a で終わるファイル名、シェーアードオブジェクトは
.so で終わるファイル名にします。
【入力フォーマット】
ar キー[オプション] アーカイブ名 [登録するファイル名..]
【主なオプション】
ar はキーとよばれる特殊なオプションがあり、以下のいずれかを必ず
1 つ最初に指定します。
- -r
- 既存するアーカイブの内容を更新する。
- アーカイブがない場合は新規作成も行う。
- -d
- アーカイブに登録されているファイルの削除を行なう。
- -t
- アーカイブに登録されているファイルを表示します。
- -x
- アーカイブに登録されているファイルを出力します。
さらに続く一般的なオプションは以下の通りです。
- c
- 新しくアーカイブ・ファイルを作成します。
- a
- 指定したファイルをアーカイブ・ファイルの最後に追加登録します。
- v
- 処理中に詳細なメッセージを表示します。
【実行例】
新規作成。
アーカイブの内容表示を行ないます。
アーカイブ中の test.o を更新します。
$ ar rv libtest.a test.o func0.o func1.o
a - test.o
a - func0.o
a - func1.o
ar: Warning: creating libtest.a
$ ar tv libtest.a
--------- 0/0 90 Jul 24 14:35 1997 ________64ELEL_
rw-r----- 4071/0 1184 Jul 24 14:35 1997 test.o
rw-r----- 4071/0 1192 Jul 24 14:35 1997 func0.o
rw-r----- 4071/0 1352 Jul 24 14:35 1997 func1.o
$ cc -c test.c
$ ar rv libtest.a test.o
r - test.o
ranlib(1) - ライブラリのランダムアクセス
【機能説明】
コマンド ranlib は個々のアーカイブに格納されたファイルをランダム・アクセス
できるように変換します。
現在の Digital UNIX では、ダイナミック・リンク(実行時に必要に応じて、随時
リンクを行う)ため、あまり必要ではありません。
【入力フォーマット】
ranlib アーカイブファイル名
【実行例】
アーカイブ・ファイルは cc 、 ld コマンドの入力ファイルとして指定できます。
$ cc prog.c testlib.a
$ ld /lib/crt0.o prog.o tesetlib.a -lc
リンク時アーカイブはそこに格納されているモジュール(オブジェクト・ファイル)
を順検索するため、先の testlib.a で func0.o が test.o を参照していたりすれ
ばエラーが発生する場合があります。
そのため、ここのモジュールをランダム・アクセスできるよう ranlib で変換します。
$ ranlib libtest.a