Cプログラムがコンパイルされると、コンパイラはオブジェクトコードを生成します。 生成後のオブジェクトコードをコンパイラまたリンカーを呼び出し. リンカの主なタスクの一つは、ライブラリ関数のコードを作成することです(例えば、printf()、scanf()、sqrt()、。.等)あなたのプログラムに利用できる。 リンカーは、ライブラリ関数のコードをオブジェクトコードにコピーするか、ライブラリ関数の完全なコードがコピーされずに実行時に使用できるようにいくつかの配置を行うことによって、このタスクを達成することができます。,

静的リンクと静的ライブラリは、使用されたすべてのライブラリ関数の実行可能ファイルへのコピーをリンカーが作成した結果です。 静的リンクより大きなバイナリファイル、あるディスクやメインメモリ。 静的ライブラリ(静的にリンクされているライブラリ)の例は、です。Linux内のファイルと.windowsのlibファイル。

静的ライブラリを作成する手順UNIXまたはUNIXのようなOSで静的ライブラリを作成して使用しましょう。
1. ライブラリに関数を含むCファイルを作成します。,div>

#include <stdio.h>
void fun(void)
{
printf("fun() called from a static library");
}



We have created only one file for simplicity., また、複数作成するファイルの図書館があります。

2. ライブラリのヘッダーファイルを作成します

voidfun(void);



3. ライブラリファイルをコ

 gcc -c lib_mylib.c -o lib_mylib.o 

4. 静的ライブラリを作成する。, このステップではバンドルの複数のオブジェクトファイルを一つの静的ライブラリ(ar) このステップの出力は静的ライブラリです。

 ar rcs lib_mylib.a lib_mylib.o 

5. これで静的ライブラリを使用する準備が整いました。 この時点で、lib_mylibをコピーすることができます。それを使用するためのどこか別の場所。 デモの目的のために、ライブラリを現在のディレクトリに保持しましょう。

上記で作成した静的ライブラリを使用するドライバプログラムを作成しましょう。
1., メイン関数でCファイルを作成します。

#include "lib_mylib.h"
voidmain()
{
fun();
}



2., コンパイルドライバーのプログラム。

gcc -c driver.c -o driver.o

3. リンクの作成ドライバープログラムの静的ライブラリ。 静的ライブラリが現在のフォルダにあることを伝えるために使用されます(-Lと-lオプションの詳細については、これを参照してください)。

gcc -o driver driver.o -L. -l_mylib

4. ドライバプログラムを実行します

./driver fun() called from a static library

静的ライブラリに関するいくつかの重要なポイントは次のとおりです。
1. 静的ライブラリの場合、実際のコードはリンカーによってライブラリから抽出され、アプリケーションをコンパイル/ビルドする時点で最終的な実行可能ファ,

2. 各プロセスは、コードとデータの独自のコピーを取得します。 動的ライブラリの場合と同様に、コードのみが共有される場合、データは各プロセスに固有です。 静図書館のメモリの足跡が大きくなる。 たとえば、すべてのウィンドウシステムツールが静的にリンクされている場合、一般的なユーザーにとって数十メガバイトのRAMが無駄になり、ユーザーは多くのページングによってスローダウンされます。

3. ライブラリコードはコンパイル時に接続されているため、最終的な実行可能ファイルは実行時にライブラリに依存しません。, 追加のランタイムロードコストはなく、使用されているライブラリのコピーを持ち歩く必要がなく、すべてが管理下にあり、依存関係がないことを意味し

4. 静的ライブラリでは、すべてがアプリケーションにバンドルされると、クライアントがシステム上で適切なライブラリ(およびバージョン)を利用できる

5. 静的ライブラリの一つの欠点は、静的ライブラリの変更(上階調)に対して、毎回メインプログラムを再コンパイルする必要があることです。

6., 今でも好まれている静的ライブラリの一つの大きな利点は、”速度”です。 静的ライブラリ内のシンボルの動的なクエリはありません。 多くの生産ラインソフトウェアの利用静的リンクライブラリです。

動的リンクと動的ライブラリ動的リンクはコードをコピーする必要はなく、バイナリファイルにライブラリの名前を配置するだけで行われます。 実際にリンクする場合に起こるプログラムでは、両方のバイナリファイルやライブラリに記憶です。 動的ライブラリ(実行時にリンクされるライブラリ)の例は、Linuxの.soと.soです。ウィンドウズのdll。,

ダイナミックライブラリに関するより多くのポイントとそれらを作成するための手順について

この記事はAbhijit Sahaによってコンパイルされ、GeeksforGeeksチームによってレビューされています。 書いてくださいコメントの場合、ある設備は、施設内または近辺にまたは共有する情報についてのお話です。

注目リーダー! 今学習を停止しないでください。 学生に優しい価格でCS理論コースとのSDEインタビューのためのすべての重要なCS理論の概念のホールドを取得し、業界の準備ができてなります。

記事タグ:
練習タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です