GNU/Linux >> Linux の 問題 >  >> Linux

UNIX ar の例:C アーカイブ ファイル (*.a) を作成、表示、抽出、変更する方法

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

Linux
  1. Linuxでファイルを解凍する方法(例付き)

  2. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  3. LinuxでRARファイルを作成、抽出、または開く方法は?

  1. initrd.img を表示、変更、および再作成する方法

  2. Linux cpio の例:cpio アーカイブ (および tar アーカイブ) を作成および抽出する方法

  3. 複数のファイルに分割された、または複数のファイルにまたがる tar アーカイブを作成する方法は?

  1. DebianパッケージアーカイブDEBからファイルを抽出する方法

  2. Linuxで圧縮ファイルの内容を表示する方法

  3. Linuxで特定のサイズのファイルを作成する方法