linux: libtoolの警告
2025/08/30
自分のメモ libsecp256k1 を見ながら Raspberry Pi3 でビルドをしている。
いつもは /usr/local
にインストールしていたのだが、pkgconfig
でパスを指定する方法も覚えてきたので $HOME/.local
にインストールすることにした。
LD_LIBRARY_PATH
は他の設定より先に評価されるので、危険といえば危険である。
なので libsecp256k1 みたいな重要なライブラリは sudo
しないと書き換えられないようなところに置いた方が安全だろう。
$ ./configure --prefix $HOME/.local --enable-module-recovery
$ make
$ make install
......
libtool: warning: remember to run 'libtool --finish /usr/local/lib'
.......
今までこんな警告は出てきてたっけ?
それにパスが $HOME/.local/lib
ではないのも気になった。
確認しよう。
libtool
なんだかものすごく重たいというか開くまでに時間がかかったが、こちらが Libtool のページ。
中の遷移も時間がかかるので見てないけど。
インストールするという感じではなく、カレントディレクトリにファイルとして存在していた。
Makefile
に libtool.m4
というのがあったので automake 関係で作られたとかだろう。
/bin/bash ./libtool --mode=install /usr/bin/install -c libsecp256k1.la '/home/xxx/.local/lib'
finish は操作するモードのことらしい。
2つ機能があり、1つは libtool ライブラリをインストールしてユーザが簡単に参照したりリンクできるようにする機能、
もう1つはクロスコンパイルされた libtool ライブラリをネイティブ環境に移植する際の作業を簡単にする機能だそうだ(gnu)。
.la
とからしいが、そもそもそういうのがよくわからんな。
詳しくは、こちら。
「謎の拡張子 .laの正体」が役に立った。
libsecp256k1 を ls
で見るとこうなっていて、.la
もある。
中身はテキストファイルで、dlname='libsecp256k1.so.6'
や old_library='libsecp256k1.a'
などがある。
static ライブラリ好きとしては “old” 扱いなのは悲しいが、指定しなかったら共有ライブラリが使われるくらいだし仕方ない。
libsecp256k1.a
libsecp256k1.la
libsecp256k1.so -> libsecp256k1.so.6.0.0
libsecp256k1.so.6 -> libsecp256k1.so.6.0.0
libsecp256k1.so.6.0.0
では、この警告は一体なんなんだ?という疑問だが、単に「思ってたのと違う」というだけっぽい。
libtool が automake とセットでよく使われるとなると、デフォルトで /usr/local
を使うのに違うなんて、きー!、とか思ってしまうのかもしれない。