ar は、オブジェクトを組み合わせて拡張子 .a のアーカイブ ファイル (ライブラリとも呼ばれる) を作成するために使用されるアーカイブ ツールです。
この記事では、「ar」ユーティリティを使用して C プログラミングでユーザー定義の静的ライブラリを作成する方法について説明します。例では、Linux ar コマンドを使用してアーカイブを作成、抽出、および変更する方法を示します。
静的ライブラリの作成を示すために、2 つの C プログラムを作成してみましょう — add.c と multiplication.c
gcc を使用してこれらのプログラムのオブジェクト コードを取得し、これら 2 つのオブジェクトから静的ライブラリ libarith.a を作成します。
1. 2 つのサンプル C プログラムを作成する
以下に示すように、addition.c プログラムを作成します。
int addition(int a,int b) { int result; result = a + b; return result; }
以下に示すように、multiplication.c プログラムを作成します。
int multiplication(int a, int b) { int result; result = a * b; return result; }
しばらく前に、C hello world の例を使用して C プログラムを作成する基本について説明しました。
2.プログラムをコンパイルしてオブジェクト コードを取得する
-c オプションを使用して、両方の c プログラムをコンパイルします。オプション -c を使用すると、対応する .o ファイルが作成されます。
$ gcc -c addition.c $ gcc -c multiplication.c
現在、現在の作業ディレクトリには、以下に示すように .c ファイルと .o ファイルの両方が含まれています。
$ ls addition.c multiplication.c addition.o multiplication.o
3. ar ユーティリティを使用して C プログラムの静的ライブラリを作成する
次のように、加算オブジェクト ファイルと乗算オブジェクト ファイルを含むスタティック ライブラリ「libarith.a」を作成します。
$ ar cr libarith.a addition.o multiplication.o
4.ライブラリ libarith.a を使用する C プログラムを作成します
ライブラリ ファイル libarith.a を使用する準備が整いました。次の例は、libarith.a スタティック ライブラリを使用するためにヘッダー ファイルを使用してサンプル C プログラムを作成する方法を示しています。
header.h を作成します:
#include <stdio.h> int addition(int a,int b); int multiplication(int a,int b);
example.c を作成します:
#include "header.h" int main() { int result; result = addition(1,2); printf("addition result is : %d\n",result); result = multiplication(3,2); printf("multiplication result is : %d\n",result); }
注:5 つの簡単なステップで gdb を使用して C プログラムをデバッグする方法では、C コードのデバッグに関する段階的な手順を説明しています。
example.c をコンパイルします:
$ gcc -Wall example.c -L/home/guest/ -larith -o example
オプション -L は、ライブラリー・ファイルを /home/guest ディレクトリーで探すようにコンパイラーに指示します。このディレクトリから、コンパイラは libarith ライブラリ ファイルを取得し、example.c プログラムでコンパイルします。
example.c をコンパイルする別の方法 :
$ gcc -Wall example.c libarith.a -o example
例の実行可能ファイルを実行します:
$ ./example addition result is : 3 multiplication result is : 6
5. ar コマンド、オプション t を使用してアーカイブ内のオブジェクト ファイルを表示する
libarith.a で使用可能なオブジェクト ファイルを一覧表示するには:
$ ar t libarith.a addition.o multiplication.o
ar コマンドのオプションは、tar コマンドに似ています。
6. ar コマンド、オプション x を使用してアーカイブからオブジェクト ファイルを抽出する
アーカイブで利用可能なオブジェクト ファイルは、次のように抽出できます。
$ mkdir object $ cp libarith.a object/ $ cd object $ ar x libarith.a $ ls *.o addition.o multiplication.o
7. ar、オプション r を使用してオブジェクト ファイルを既存のアーカイブに追加する
減算.o という別のオブジェクト ファイルを作成したと仮定します
次のコマンドは、以下に示すように、subtraction.o オブジェクトを挿入して libarith.a ライブラリ ファイルを拡張します。
$ ar r libarith.a subtraction.o $ ar t libarith.a addition.o multiplication.o subtraction.o
.o ファイルを挿入するときに、アーカイブに既に存在する場合は置き換えられます。置換をチェックせずに、-q オプションを使用してオブジェクトをアーカイブの最後に追加できます。
8. ar、オプション d を使用して特定のアーカイブ メンバーを削除する
ライブラリ ファイルから特定のアーカイブ メンバーを削除するには、次の手順を実行します。
$ ar d libarith.a addition.o $ ar t libarith.a multiplication.o subtraction.o