動的およびLinuxのプログラミングの下でLinuxのライブラリファイルの下の静的ライブラリ

本質的に、ライブラリは、実行可能なバイナリコードの形式で、オペレーティング・システムは、実行するためにメモリにロードすることができます。いわゆる静的、動的リンクを指します。

これは、静的ライブラリと呼ばれ、[]、リンク段階ので、一緒にパックの実行可能ファイルへのライブラリのリンクを参照して生成された.oオブジェクトファイルをコンパイルされます。したがって、対応するリンクは、静的リンクと呼ばれます。

同じ動的ライブラリ。

次のように静的ライブラリの機能がまとめられています:

リンクされたライブラリの静的ライブラリはコンパイル時完了時にあります。

接続なしでのランタイムライブラリのプログラムは、移植を容易にします。

関係するすべてのオブジェクトファイルやライブラリを1つの実行可能ファイルにリンクされているため、スペースとリソースの無駄。 

次のように動的ライブラリの機能がまとめられています:

いくつかのライブラリ関数のためのダイナミックリンクライブラリは、期間のランニングに延期ロードさ。 

プロセス間でリソースを共有を実現することができます。簡単手順の一部をアップグレードします(共有ライブラリ、したがって動的ライブラリとして知られています)。

でも、本当にリンク負荷は、完全にプログラムコード(番組の呼び出し)で、プログラマによって制御されることができます。

1.静的ライブラリにコンパイル

静的ライブラリ、またはDLLファイルが.oのによって作成されているかどうか。したがって、我々は最初の.oファイルでのgcc test.cのにソースコードをコンパイルする必要があります。また、Makefileのことによって達成することができます。

ライブラリlibqww.aライブラリ名を作成し、コマンドARを使用して、ライブラリ名はQWWです

1. 2. 3. 4.o 5.O libqww.a AR RCS

インタフェースヘッダファイルのライブラリファイルを作成します。

gccの-o testqww test.cの-static -L。-lcal

(1)、gccの-o testqww:testqww背後使用GCCコンパイラ、-o指定したファイル名は、最終生成されたファイル名であります

(2)、 - 静的:指定静的ライブラリの使用

(3)は、 - L.:-Lライブラリを使用して指定、後者は、現在のディレクトリに、そのライブラリファイルを示しています。

(4)、 - LCAL:、ライブラリファイルの名前を示している - そのオプションを示し、lはCALの後ろに、速記libです実際のライブラリファイル名の拡張子では必要ありません

2.コンパイルしたDLL

ターゲット・ファイルを生成します1.o 2.O 3.O 4.o 5.O test.o

GCCコンパイライェジンハオは、ラインを作ります

GCC -shared -o -fPIC libqww.so 1 2 3 4 5

どこtopコマンドの説明:

gccの-o libqww.so(1)は、:使用のgccコンパイラ、-o指定したファイル名、libqww.soダイナミックライブラリの後ろに名前が最終的に生成され、背中がlibqww.aです。

(2)、 - 共有:指定された動的ライブラリを生成します

(3)、 - FPIC:このオプションは、アドレスリンクランタイム、gccがコードは関数や変数の特定のメモリ位置への参照が含まれていない生成伝えます。

GCC -oテストtest.cのが-L。-lqww

どこtopコマンドの説明:

(1)、GCC -oテスト:使用GCCコンパイラ、-o指定したファイル名。

(2)、-staticを使用しないでください:動的ライブラリを使用することを指定します

(3)は、 - L.:-Lライブラリを使用して指定、後者は、現在のディレクトリに、そのライブラリファイルを示しています。

(4)、 - lqww:、ライブラリファイルの名前を示している - そのオプションを示しQWWが実際のライブラリファイル名の拡張子を必要としないで後ろに、lは、速記libです

ビューのファイルサイズ:

合計84
-rw-RW-rw- 1 qiuww qiuww 117 3月19日夜8時07分1.C
-rw-RW-rw- 1 qiuww qiuww 1232年3月20日20時16 1.o
-rw-RW-rw- 1 qiuww qiuww 107 3月19日20:08 2.C
-rw-RW-rw- 1 qiuww qiuww 1232年3月20日20時16 2.O
-rw-RW-rw- 1 qiuww qiuww 111 3月19日20:08 3.C
-rw-RW-rw- 1 qiuww qiuww 1232年3月20日20時16 3.O
-rw-RW-rw- 1 qiuww qiuww 180 3月19日20:08 4.C
-rw-RW-rw- 1 qiuww qiuww 1248年3月20日20時16 4.o
-rw-RW-rw- 1 qiuww qiuww 107 3月19日午後08時48分5.C
-rw-RW-rw- 1 qiuww qiuww 1232年3月20日20時16 5.O
---------- 1 qiuww qiuww 362 3月20日午後08時16分のMakefile
-rwxrwxrwx 1 qiuww qiuww 8680 3月22日9時55分のa.out
-rwxrwxrwx 1 qiuww qiuww 3月20日8681 20:36ボル
-rw-RW-rw- 1 qiuww qiuww 216 3月19日午前20時22 cal.h
-rw-RW-rw- 1 qiuww qiuww 6588 3月20日午後08時21分libqww.a
-rwxrwxrwx 1 qiuww qiuww 7657 3月20日20時42 qww.so
-rw-RW-rw- 1 qiuww qiuww 586 3月20日20:17 test.cの
-rw-RW-rw- 1 qiuww qiuww 2736年3月20日20時18 test.o
-rwxrwxrwx 1 qiuww qiuww 8681 3月20日20時42
testqww オリジナルの静的ライブラリが700Kについて持っている巨大な十分ですが、後で動的ライブラリを実現し、私はどのように静的ライブラリが少ないのか分かりません。
そして、ライブラリ小さな前に静的ライブラリよりもダイナミック。
この記事は抜粋され  たLiチーズをダブルLinuxのライブラリファイルの下でプログラミングを https://www.cnblogs.com/guochaoxxl/p/7141447.html

おすすめ

転載: www.cnblogs.com/qww-qing/p/12544399.html