2012-09-06 21 views
14

私はサードパーティのライブラリ(Linux上)をコンパイルしようとしていて、libsomething.aファイルを生成しています。私の他のライブラリは.soファイルです.soファイルと.aファイルの違いは何ですか?

でも、.aは共有ライブラリです。 .so libのように使うことができます

2つの違いはありますか?またはそれらは異なる命名規則でちょうど同じです。

+2

あなたは、同じように使用することができると思いますか? –

+0

@CarlNorum両方の型に対してリンクすることができるので、結果は異なります。 –

+1

私はそれを知っている.soは共有ライブラリですが、それはまた共有ライブラリですが、静的ライブラリか共有ライブラリであるかどうかわかりません。 – rajshenoy

答えて

17

しかし、いや、それは静的ライブラリだとしても.Aは、ライブラリ

共有されていることが表示されます。

、あなたがそれにリンク意味yesの場合、その後、ちょうど

のlib .soのように使用することができます。しかし、.soファイルで行うことができる.aファイルをdlopen()することはできません。

いつもお友達のUncle Gに質問をすることができます。 .soファイルがWindowsでDLLと同様共有オブジェクト動的ライブラリである

+0

ありがとうございます。これは私が混乱したところです。私の問題はそれらをリンクすることではありませんでした。両方をリンクすることができます。私は.aが動的にまたは静的にのみリンクできるかどうかを知りたがっています。そのクリアは今 – rajshenoy

+8

"アンクルG"へのリンクが壊れています。 – splungebob

18

.aファイルは、静的ライブラリあります。

.aコンパイル & .so中のプログラムの一部としてが含まできプログラムロードながらは、をインポートすることができます。

15

*.aとリンクすると、ライブラリのコードが実行ファイル自身に含まれ、実行可能ファイルは*.aファイルを必要とせずに実行できます。 *.soにリンクすると、そうではなく、実行時に*.soファイルが存在している必要があります。

関連する問題