戸川です。

困ったというわけではないのですが、勉強したい事があったので。

10.3をソースからインストールしたのですが、make delete-old-libsの
後に/usr/libを見ると、かなり古い日付の.aファイルがある事に
気づきました。
----
-r--r--r--  1 root  wheel     26676 11月 15  2014 libbluetooth_p.a
-r--r--r--  1 root  wheel     24316 11月 15  2014 libbluetooth.a
----
「make installすると、古いライブラリは新しいもので上書きされる」
と思っていたので、不思議に思って調べました。

試しに、/usr/src/lib/libbluetooth/ で make -n install してみると、
以下のような処理が行われるようです。
----
install -C -o root -g wheel -m 444   libbluetooth.a /usr/lib
install -C -o root -g wheel -m 444   libbluetooth_p.a /usr/lib
install -s -o root -g wheel -m 444     libbluetooth.so.4 /usr/lib
----

ここで、.aファイルをインストールする時の -C フラグですが、
「内容が同じなら、ファイルの更新時間を更新しない」という
フラグであると理解しました。ここまでで、.aファイルの
タイムスタンプが更新されないのは理解しました。

で、.aファイルが同一ならば、.soファイルも同一だと思ったのですが、
手元にあった古い libbluetooth.so.4 と、新しい libbluetooth.so.4 では
md5の値が違うようなのです。

.soファイルをobjdumpしてみたところ、.comment セクションに、subversionの
ブランチのパスとかリビジョン番号が入っているようなので、ここが原因
(今回はreleng/10.2からreleng/10.3)なのは分かったのですが、どうして
ここに情報を入れて、違うファイルにしているのか、が興味があったりします。

同じブランチであれば、同じファイルが生成されるのかもしれませんが、
そうすると今度は.soファイルのインストール時に-Cフラグが付いていないのが
気になります。

どなたか、よろしければ教えていただきたく。
以上です。

-- 
Satoshi.Togawa <s...@t11i.jp>
_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信