静的ライブラリの簡単な例


詳細
この文書では、2つの関数を含むミニ関数ライブラリを作成し、サンプル・プログラムで1つの関数を呼び出します.この2つの関数はそれぞれhelloとgoodbyeで、簡単なテキスト情報だけを印刷します.
 
1、2つの関数にそれぞれのソースファイルを作成する(それぞれhello.cとgoodbye.cと命名する)
     (1) hello.c
#include 

void hello(int arg) {
  printf("Hello, %d
", arg); }

    (2) goodbye.c
#include 

void goodbye(char *arg) {
 printf("goodbye, %s
", arg); }

 
2、これらの関数をそれぞれコンパイルして、ライブラリファイルに含めるターゲットファイルを生成できます.-cオプションのあるC言語コンパイラを呼び出すことで完了できます.-cオプションの役割は、コンパイラが完全なプログラムを作成することを阻止することです.main関数を定義していないため、完全なプログラムを作成しようとすると成功しません.
$ gcc -c hello.c goodbye.c

$ ls *.o
hello.o   goodbye.o

  
3、goodbye関数を呼び出すプログラムを作成します.
まず、ライブラリファイルのヘッダファイルを作成します.このヘッダファイルは、ライブラリファイルを使用するすべてのアプリケーションに含まれるライブラリファイルの関数を宣言します.
 
    lib.h
void hello(int);
void goodbye(char *);

 
4、呼び出しプログラム(program.c)は非常に簡単です.ライブラリのヘッダファイルを含み、ライブラリの関数を呼び出します.
#include 
#include "lib.h"

int main() {
 goodbye("Hello World");
 exit(0);
}

 
5、今、このプログラムをコンパイルしてテストすることができます.コンパイラにターゲットファイルを明示的に指定し、コンパイラにファイルをコンパイルし、以前にコンパイルしたターゲットモジュールgoodbyeと比較するように要求します.oリンク.
$ gcc -c program.c

$ gcc -o program program.o goodbye.o

$ ./program
goodbye, Hello World

 
6、ライブラリファイルが作成され、使用されます.arプログラムを使用してアーカイブファイルを作成し、ターゲットファイルを追加します.このプログラムをarと呼ぶのは、アーカイブファイルまたはコレクションを作成するためにいくつかの個別のファイルを大きなファイルにまとめるためです.
$ ar crv lib.a hello.o goodbye.o
a - hello.o
a - goodbye.o

 
7、ライブラリファイルが作成され、2つのターゲットファイルも追加されました.一部のシステム、特にBerkeley Unixから派生したシステムでは、関数ライブラリを正常に使用するには、ranlibコマンドで完了するコンテンツテーブルを関数ライブラリに生成する必要があります.
$ ranlib lib.a

関数ライブラリが使用可能になりました.コンパイラが使用するファイルのリストにライブラリファイルを追加してプログラムを作成できます.
$ gcc -o program program.o lib.a

$ ./program
goodbye, Hello World