web-dev-qa-db-ja.com

.aファイルと.soファイルとは何ですか?

私は現在Cアプリケーションを _ aix _ に移植しようとしていて混乱しています。 .aファイルと.soファイルとは何ですか。また、アプリケーションの構築時または実行時にどのように使用されますか。

373
Dunc

アーカイブライブラリ(.a)は静的にリンクされています。つまり、gccの-cオプションでプログラムをコンパイルしたときです。そのため、ライブラリに変更があった場合は、コードをもう一度コンパイルしてビルドする必要があります。

ライブラリに対する.so(共有オブジェクト)の利点は、ランタイム中、つまりgccで.o file -oオプションを作成した後にリンクされることです。そのため、.soファイルに変更があったとしても、メインプログラムを再コンパイルする必要はありません。ただし、メインプログラムがlnコマンドで新しい.soファイルにリンクされていることを確認してください。

これは、.soファイルを構築するのに役立ちます。 http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

お役に立てれば。

418
Leafy

.aは静的ライブラリです。あなたがそれらの中に格納されたコードを使うならば、それはそれらから取られて、あなた自身のバイナリに埋め込まれます。 Visual Studioでは、これらは.libファイルになります。

.soは動的ライブラリです。あなたがそれらの中に格納されたコードを使うならば、それはあなた自身のバイナリに取り込まれて埋め込まれることはありません。代わりに参照されているだけなので、バイナリはそれらに依存し、soファイルのコードは実行時に追加/ロードされます。 Visual Studio/Windowsでは、これらは.dllファイル(リンク情報を含む小さな.libファイル付き)になります。

186
Mario

.aファイルは通常、静的にリンクされた(またはより正確にアーカイブされた)ライブラリです。
。動的リンクライブラリもそうです。

移植するには、それらを作成するためにコンパイルされたソースコード、またはAIXマシン上の同等のファイルが必要です。

10
gbulmer

それらはリンク段階で使用されます。 .aファイルは静的にリンクされ、.soファイルは一種のリンクになっているので、exeを実行するときはいつでもライブラリが必要です。

/usr/lib/libはそれらのほとんどを持っています、そしてLIBRARY_PATH環境変数もあります。

8
Matt

ウィキペディアはこの情報のためのまともな情報源です。

.aのような静的ライブラリファイルについて学ぶには 静的ライブラリ

.soのような共有ライブラリファイルについて学ぶには Library_(computing)#Shared_libraries このページの ファイル名の指定 セクションにも役に立つ情報があります。

1
user3731622