人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ためしに、ライブラリのSONAMEを指定せずにリンクしてみたところ、問題なくリンクできました。
そもその、SONAMEは何のためにあるのでしょうか?SONAMEは必ず設定しなければいけないものですか?

●質問者: mitani1207
●カテゴリ:コンピュータ
✍キーワード:いもの ライブラリ リンク
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●35ポイント

(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...

・ライブラリを更新しながらも、そのライブラリの古くて後方互換性のないバージョンを使いたいというプログラムを、引き続きサポートすることができる

・特定のプログラムを実行するとき、特定のライブラリ、もしくはライブラリ内の特定の関数でさえもオーバーライドすることができる

・既存のライブラリを使用してプログラムが動いている間にも、これら全てをおこなうことができる

大雑把に表現すると、

共有ライブラリは必要箇所だけの訂正&再コンパイルで手直しやバージョンアップが出来る。

静的ライブラリは実行ファイルが無駄に大きくなり、ライブラリの使いまわしが出来ないのでメモリも多く必要とし、

メンテナンスにも手間がかかる上に、速度差は期待できないといった具合にデメリットのほうが大きいので、

昨今ではあまり使われない。


出来上がったものが期待通りに動いているのであれば、特に問題無しと言えなくもないですが、

動作コストや今後のメンテナンスコストを考えると共有にしておくほうが良いでしょうね。


2 ● kmond2
●35ポイント

これって、Linuxの話だよね。

soname は共有ライブラリの場合に必要なもの。つまり、ダイナミックリンクを行う場合に参照されるものであり、静的なリンクを行う場合には必要とされません。


どっかの誰かさんは長々とサイトの丸写しをして、まったくポイントを外した回答をしているようだけど。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ