ホームページ  >  記事  >  動的ライブラリと静的ライブラリの違いは何ですか

動的ライブラリと静的ライブラリの違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-07-23 13:37:1939458ブラウズ

相違点: 1. 静的ライブラリの拡張子は通常「.a」または「.lib」ですが、動的ライブラリの拡張子は通常「.so」または「.dll」です。 2. 静的ライブラリはコンパイル中にターゲット プログラムに直接統合され、正常にコンパイルされた実行可能ファイルは独立して実行できますが、動的ライブラリはコンパイル中に接続されたターゲット プログラムに配置されません。つまり、実行可能ファイルは独立して実行できません。 。

動的ライブラリと静的ライブラリの違いは何ですか

このチュートリアルの動作環境: Windows 10 システム、Dell G3 コンピューター。

静的ライブラリと動的ライブラリの最も重要な違いは、ライブラリ がターゲット (プログラム) にコンパイルされるかどうかです。

静的 (関数) ライブラリ

一般的な拡張子は (.a または .lib) で、このタイプの関数です。通常、ライブラリには libxxx.a または xxx.lib という拡張子が付いています。

このタイプのライブラリは、コンパイル中に ターゲット プログラムに直接統合されるため、静的関数ライブラリを使用してコンパイルされたファイルは大きくなります。このタイプの関数ライブラリの最大の利点は次のとおりです。コンパイルが成功したことを確認します。実行可能ファイルは、関数ライブラリの内容を読み取るための外部リクエストを必要とせずに独立して実行できますが、アップグレードの容易さの点では明らかに利点がありません。関数ライブラリが更新される場合は、再コンパイルする必要があります。

動的関数ライブラリ

動的関数ライブラリの拡張子は通常 (

.so または .dll) です。通常、クラス関数ライブラリの名前は libxxx.so または xxx.dll です。

完全にプログラム内に取り込まれる静的関数ライブラリとは異なり、動的関数ライブラリには、コンパイル中にプログラム内に「ポイント」位置が 1 つだけあります。つまり、実行可能ファイルが関数ライブラリのメカニズムを使用する必要がある場合、の場合、プログラムは関数ライブラリを読み取って使用します。つまり、実行可能ファイルを単独で実行することはできません。これにより、実行ファイル全体を再コンパイルすることなく、対応するダイナミックライブラリを置き換えるだけで、製品の機能アップグレードの観点からアップグレードが容易になります。

要約すると、次のことはわかりません:

製品化の観点から、公開されるアルゴリズム ライブラリまたは関数ライブラリは可能な限り動的ライブラリであるべきです。そのため、更新とアップグレードが便利で、実行可能ファイル全体を再コンパイルするには、古いダイナミック ライブラリを新しいバージョンのダイナミック ライブラリに置き換えるだけです。

関数ライブラリの統合の観点から見ると、公開されているすべてのサブライブラリ (複数) を動的ライブラリに統合して外部インターフェイスを提供したい場合は、すべてのサブライブラリを静的ライブラリにコンパイルする必要があります。 , そのため、すべてのサブライブラリはすべてターゲットの動的ライブラリにコンパイルでき、最終的に統合されたライブラリは外部に機能を提供します。

関連知識の詳細については、

FAQ 列をご覧ください。

以上が動的ライブラリと静的ライブラリの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。