そもその、SONAMEは何のためにあるのでしょうか?SONAMEは必ず設定しなければいけないものですか?
(1)ライブラリは2種類(3種類)
http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/introduct...
・静的ライブラリ
・共有ライブラリ ← soname はこれ
・動的ライブラリ(共有ライブラリの一種)
(2)リンクできた理由
リンカは共有→静的の順に必要なものを探しますので、
エラーを吐かずに終了して、動作もとりあえず問題無いと言うことであれば、
静的ライブラリが準備されていて、それで事足りたということでしょう。
(3)必要性
静的ライブラリのメリットはあまりありません。
http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/static-li...
実行可能ファイルにリンクされる静的 ELF ライブラリ内のコードは若干速く (1 ~ 5%) 動作するはずですが、実際には、他のごちゃごちゃした要因のため、その通りになることは稀のようです。
共有ライブラリを使うメリットは下記のようなものです。
http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-li...
・ライブラリを更新しながらも、そのライブラリの古くて後方互換性のないバージョンを使いたいというプログラムを、引き続きサポートすることができる
・特定のプログラムを実行するとき、特定のライブラリ、もしくはライブラリ内の特定の関数でさえもオーバーライドすることができる
・既存のライブラリを使用してプログラムが動いている間にも、これら全てをおこなうことができる
大雑把に表現すると、
共有ライブラリは必要箇所だけの訂正&再コンパイルで手直しやバージョンアップが出来る。
静的ライブラリは実行ファイルが無駄に大きくなり、ライブラリの使いまわしが出来ないのでメモリも多く必要とし、
メンテナンスにも手間がかかる上に、速度差は期待できないといった具合にデメリットのほうが大きいので、
昨今ではあまり使われない。
出来上がったものが期待通りに動いているのであれば、特に問題無しと言えなくもないですが、
動作コストや今後のメンテナンスコストを考えると共有にしておくほうが良いでしょうね。
コメント(0件)