Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> 静的ライブラリの生成とLinuxでの使用

静的ライブラリの生成とLinuxでの使用

  

A.静的ライブラリの概念

1.ライブラリは、プログラムにリンクできる、コンパイル済みのオブジェクトファイルの集まりです。静的ライブラリサフィックスは、' .a'の特別なアーカイブファイルストレージです。

2.標準システムライブラリは、/usr /libディレクトリと/libディレクトリにあります。たとえば、Unix系システムでは、Cオーダーのシーケンスライブラリは通常、ファイル/usr/lib/libm.aとして格納されています。ライブラリ内の関数のプロトタイプは、ヘッダーファイル/usr/include/math.hで宣言されています。

3.C標準ライブラリ自体は/usr/lib/libc.aとして格納されています。このファイルには、printfなど、ANS1 /ISO標準で指定された関数が含まれています。すべてのCプログラムに対して、libc.aはデフォルトでリンクされています。

4.例:

tiger.cプログラムの数学ライブラリlibm.aのsin関数を呼び出します。

 #include< stdio.h> #include< math.h> int main(){double x = 2.0; double y = sin(x); printf('結果:%f \\ n' 、y); return 0;} 


gcc tiger.cを直接使用すると、エラーが発生します。

未定義の‘ sin’;

1>関数sin()は、プログラムでもデフォルトのライブラリでも定義されていません。’ libc.a’指定しない限り、コンパイラは’ libm.a’をリンクしません。

2>コンパイラがsin()をメインプログラム< test.c>にリンクするには、数学ライブラリ’ libm.a’を用意する必要があります。

3>使用方法:

gcc tiger.c /usr/lib/libm.a -o tiger

これでコンパイルできます。コマンドラインで長いパスを指定しないようにするために、コンパイラはリンクライブラリ "ld"; - l'にクイックオプションを提供します。そのため、次の方法を使用できます。

gcc tiger.c -lm&tiger

注意:オプション-lNAMEは、システムライブラリディレクトリ内のライブラリファイルlibNAME.aをリンクしようとするためにリンカを使用します。 。


2.静的ライブラリの生成と使用

1.静的ライブラリはobjファイルの集まりで、通常は静的ライブラリの末尾に' .a'が付いています。静的ライブラリはプログラムarによって生成されます。

2.静的ライブラリの利点は、ライブラリコードを再コンパイルせずにプログラムを再リンクできることです(この方法では、コンパイル処理時間が短縮されます(大きなプログラムをコンパイルする場合はコストがかかります))。長い間)。静的ライブラリのもう1つの利点は、開発者が使用する人々にライブラリファイルを提供できることです。オープンソースコードは必要ありません。これは、ライブラリ関数プロバイダで使用される一般的な方法です。

3.例を使用して静的ライブラリを生成し、静的ライブラリを使用する方法を理解してください。

最初に静的ライブラリを生成します。

1> testフォルダーには3つのファイルがあります。 .c、tiger.c、tiger.h;

a。main.cファイルの内容:

 #include< stdio.h> #include' tiger.h' //注意.aファイルをint main(void){printf(' sum =%d \\ n'、add(3,5)); return 0;} 

b.tigerにリンクするだけでなく、このファイルを含めてください。 .hファイルの内容:

 #ifndef __TIGER __#define __TIGER__int add(int a、int b);#endif 

c.tiger.cファイルの内容

 int add (int a、int b){return a + b;} 

2>静的ライブラリを作成する際の最も基本的な手順は、ターゲットファイルtiger.oを生成することです。

gcc -o tiger.o -c tiger.c

3>次に静的ライブラリlibadd.aを生成します。

ar -rcs libadd.a tiger.o

次に静的ライブラリを使用します。

1>ライブラリファイルを指定したGccコマンドでも問題ありません。

gcc -o main main.c libadd.a

2>' -lライブラリ名'コマンドを使用することもできます。 OK、ライブラリ名は、文字列ライブラリとライブラリの拡張が含まれていません。

gcc -o main main.c -ladd

上記のコマンドを実行すると、システムから次のメッセージが返されます。

見つからない– ladd

上記のコマンドは、システムのデフォルトパスXi'an内でadd functionライブラリを探し、それを生成されるターゲットプログラムにリンクします。ライブラリファイルと現在のコンパイル済みファイルが同じディレクトリにある場合など、ライブラリの追加機能がシステムのデフォルトの検索パスにないため、システムはライブラリファイルの追加が見つからないというプロンプトを表示します。 .c -L ./-ladd

システムは通常通り実行可能ファイルを生成できます。

説明:

-lオプションを使用する場合、-oオプションの宛先名は-lリンクのライブラリ名の前に指定する必要があります。それ以外の場合、gccは-lをビルドのターゲットと見なして失敗します。

Copyright © Windowsの知識 All Rights Reserved