質問編集履歴

2

追記

2017/01/19 03:28

投稿

Chironian
Chironian

スコア23272

test CHANGED
File without changes
test CHANGED
@@ -59,3 +59,37 @@
59
59
  ただ、古い共有ライブラリ・ファイルを残したままバージョンアップできれば、新しいもので何か不具合が起きた時、古いものへ簡単に戻せます。
60
60
 
61
61
  これがsonameに対して複数のreal nameを対応させる主なメリットでしょうか? また、他にも何か目的(メリット)はあるでしょうか?
62
+
63
+
64
+
65
+ ### 私なりの結論(2017/01/19追記)
66
+
67
+ Windowsでは大変頭の痛い非互換なバージョンのライブラリへのリンクを回避できるスマートな技術としてsonameとldconfigがlinuxには存在しています。
68
+
69
+ そして、David A. Wheeler氏がその折角の技術を無にして、互換性を問わず最新のライブラリとリンクさせるバージョン番号のないlinker nameを提案されています。
70
+
71
+
72
+
73
+ その理由が下記のように書かれています。
74
+
75
+
76
+
77
+ > ほとんどの場合において、ライブラリを更新したら、リンク時にそれを自動的に利用したいと思うでしょうから
78
+
79
+
80
+
81
+ アプリケーションを更新した時は最新版を使いたい人がほとんどですね。
82
+
83
+ ライブラリを更新した時に、それを使うアプリケーションが起動しなくなるリスクを冒したい人はほとんどいないと思います。
84
+
85
+
86
+
87
+ 「前者と混同し、かつ、linuxでは対策されているのであまり発生しない後者の問題を見落とした結果、バージョン番号のないlinker nameが提案され、それをなんとなく納得してしまった人が多数いる」を、現時点での私なりの結論と致します。
88
+
89
+
90
+
91
+ とはいえ、自分で書いておきながら、このような間違いを多くの人が冒していると言う説には無理を感じます。
92
+
93
+ もし、linker nameが存在した方がよい理由をご存知の方、もしくは、推測のある方がいらっしゃいましたら、教えて頂けると幸いです。
94
+
95
+ 逆に、「libtoolを使っていないライブラリの場合、バージョン番号のないlinker nameによるシンボリックリンクを生成するインストーラなんて実際にはないよ」と言う情報があると大歓迎です。

1

typo

2017/01/19 03:28

投稿

Chironian
Chironian

スコア23272

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  - ldconfigを実行
28
28
 
29
- sonameシンボリック・リンク・ファイルが生成され、それはreal nameのファイルを指す。
29
+ 共有ライブラリ・ファイルに記録されているsonameを使ってシンボリック・リンク・ファイルが生成され、それはreal nameのファイルを指す。
30
30
 
31
31
 
32
32
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  しかし、バイナリ非互換な共有ライブラリにリンクするのはあり得ないように感じます。
48
48
 
49
- 何故、linker nameにはバージョ番号を含まないのでしょうか?
49
+ 何故、linker nameにはバージョ番号を含まないのでしょうか?
50
50
 
51
51
  このように書いているサイトしか見つからないので自信はないのですが、リンク先サイトのミスですよね?
52
52