ためしに、ライブラリのSONAMEを指定せずにリンクしてみたところ、問題なくリンクできました。

そもその、SONAMEは何のためにあるのでしょうか?SONAMEは必ず設定しなければいけないものですか?

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/07/05 12:05:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント35pt

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

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

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

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

大雑把に表現すると、

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

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

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

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


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

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

id:kmond2 No.2

回答回数31ベストアンサー獲得回数2

ポイント35pt

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

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


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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません