Linux動的ライブラリ、静的ライブラリ

1.ライブラリとは何ですか?

ライブラリは、メモリにロードしてオペレーティングシステムで実行できる実行可能コードのバイナリ形式です。これは、ソースコードをバイナリ形式のソースコードに変換することであり、暗号化と同等です。他のユーザーはライブラリを使用できますが、ライブラリのコンテンツを表示できません。

2.静的ライブラリ:

プログラムが実行(コンパイル)される前に静的関数ライブラリがターゲットプログラムに追加されると、
Linuxのネーミングシステムの静的ライブラリライブラリのルールは次のようになります。

静的ライブラリファイル名の命名方法は「libxxx.a」、ライブラリ名の接頭辞は「lib」、接尾辞は「.a」、「xxx」は静的ライブラリ名です。
長所と短所:

利点:
1。静的ライブラリがプログラムにパッケージ化されており、読み込み速度が速い
。2。リリースプログラムは静的ライブラリを提供する必要がない。移植に便利なアプリにすでに存在している必要がある
欠点:
1。リンク中に実行可能ファイルに完全にコピーされる。使用すると複数の冗長コピーが発生します
2.更新、展開、およびリリースの問題
3.動的ライブラリ

動的関数ライブラリは、プログラムの実行時にターゲットプログラムによって動的に(一時的に)呼び出されます

Linuxネーミングシステムの動的ライブラリライブラリのルール:

ここに写真の説明を挿入

長所と短所:

利点:
1。リンク時にコピーが不要で、プログラムの実行時にシステムによってプログラムがメモリに動的にロードされます。プログラムを呼び出すには、システムが1回だけロードされ、複数のプログラムを共有できるため、メモリを節約できます。
2.アプリにライブラリソースコードがないため、プログラムのアップグレードは簡単です。アップグレード後、ライブラリ名が同じである限り、関数名とパラメータは同じままで、正常に読み込まれるように最適化されます。
短所:
1。読み込み速度が静的ライブラリよりも遅い
2.公開プログラムが依存する動的ライブラリを提供する必要がある
4.ライブラリの作成

静的ライブラリの作成:フォーマットxxx.a

ステップ1:ポイントCファイルから.oファイルを生成する

gcc  xxx.c  -c  xxx.o 

ステップ2:.oファイルからxxx.a静的ライブラリファイルを生成する

ar rcs 静态库的名字   原材料
ar rcs libtest.a     a.o  b.o

動的ライブラリの作成:フォーマットxxx.so

gcc  -shared   -fpic  .c文件  -o  动态库名
gcc  -shared   -fpic  test.c  -o  libtest.so

-shared:動的ライブラリを生成するように指定します
-fpic:コンパイルフェーズで動作します。オブジェクトファイルを生成するときにこのオプションを使用して、位置に依存しないコードを生成する必要があります

5.ライブラリの使用

静的ライブラリの使用:

gcc  test.c  -ltest   -L./   -o   target

-ltest: "-l"は、オブジェクトファイルの生成に使用されるライブラリであり、ライブラリ名は最後まで切り捨て
られます。-L:-Lで指定されたパスからライブラリを検索するようにgccコンパイラに指示します。デフォルトでは、/ user / libまたは/ user / local / libから検索します

動的ライブラリの使用は静的ライブラリと同じです

動的ライブラリを備えたプログラムの場合、プログラムの実行時に「LD_LIBRARY_PATH」で指定されたパスでライブラリファイルを検索するように指定できます。

export  LD_LIBRARY_PATH = "/home/pi/back/test"
                           自己指定路径

おすすめ

転載: blog.csdn.net/hhltaishuai/article/details/107714123