web-dev-qa-db-ja.com

静的ライブラリの役割は何ですか?

静的ライブラリはデフォルトで/usr/libまたは/usr/lib64にありますが、次のコマンドを使用して、OSからそれらをすべて削除しました。

find / -name *.a -exec rm -rf {} \;

私のLinuxはすでに大丈夫で、すべてがうまく機能しています!

言えますか?

"Package.rpmまたは* .debにはコンパイラ出力が含まれていますが、共有ライブラリのみが必要です。

ソースコードからソフトウェアをインストールするとき、構造内で静的ライブラリを使用している場合、コンパイル中にリンカーを使用し、静的ライブラリを実行可能ファイルにコピーします。

システムに*.aファイルがない場合、将来的にソースコードからソフトウェアをインストールすると、問題が発生する可能性があります。

簡単な方法で説明してください

4
Sinoosh

静的ライブラリは、コンパイル時にバイナリによって使用されるライブラリです。コンパイル時にコンパイルされたバイナリとリンクされ、バイナリ自体の一部になるため、通常はランタイムで再び使用されません。

また、実装では、これらはバイナリ間で共有されず、特定の静的ライブラリでコンパイルされたバイナリのみがそれを使用します。そのため、アプリケーションでは、これらは静的にリンクされたライブラリの正反対です。

静的ライブラリは.aで終わり、動的ライブラリは.soで終わることに注意してください。

8
heemayl

静的ライブラリは、コンパイルされたソースコードのバイナリに依存しないパッケージであり、静的にビルドするときにアプリケーションに「インポート」します。

実際、リンカと呼ばれるプログラムは、コンパイルされたソースコードとともに、コンパイルされたコードの一種の「コピーアンドペースト」を実行します(もう少し複雑ですが、この説明はあなたの要求に応えるためにうまく行くことができます...) 。

次に、OPで報告したメッセージは、ディレクトリ「lib」から静的ライブラリを削除しても、インストールされたプログラムに問題が発生しないことを合成で示しています。 Linuxで発生する可能性があるのは、そのプログラムがコンパイルされていないソースコードによって直接配布されるため、コンパイル手順が必要なためです。通常、rpmまたは他のLinuxパッケージ/セットアップマネージャーを使用して実行されます。

代わりに、投稿されたメッセージが常に言っているように、新しいプログラムをインストールすると、削除されたライブラリが必要な場合、インストールが失敗する可能性があります。コンパイル時にリンカが必要な(参照された)静的ライブラリを見つけられないためです。

私の英語が下手でごめんなさい.