[FreeBSD-users-jp 95686] ライブラリインストール時の -C フラグの有無
Satoshi Togawa
st @ t11i.jp
2016年 3月 14日 (月) 11:53:15 UTC
戸川です。
困ったというわけではないのですが、勉強したい事があったので。
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 <st at t11i.jp>
freebsd-users-jp メーリングリストの案内