これはより一般的な質問です。Windows DLL には dll のバージョン情報を含むリソース ファイルを設定できることは知っていますが、Linux 共有オブジェクトに対して同じことを行う方法を知りたいと思っています。
私が直面している問題は、実際にはターミナルで何かを実行しているときに、libz.so.1 のバージョン情報が利用できないというメッセージが表示されることです。これは、私がコンパイルした独自のバージョンの libz がアプリケーションに存在するためです。ライブラリは実際には libz.so.1.2.3 であり、同じバージョンが /lib に存在します。ファイルは実際にはライブラリの同じバージョンですが、そのうちの 1 つ (私がコンパイルしたもの) には、バージョン情報が欠落していると書かれています。
そのため、ファイル名だけでなくバイナリにバージョン情報を実際に含める方法を考えさせられます。次のようなソリューションがあれば理想的です
./configure .... some_version_option=1.2.3
ライブラリの作業バージョンを使用する場合:
ldd /usr/bin/git
linux-vdso.so.1 => (0x00007fffdfbff000)
libz.so.1 => /lib64/libz.so.1 (0x00007f3797fa7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c56000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c55c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c55400000)
コンパイルしたバージョンを使用する場合:
ldd /usr/bin/git
/usr/bin/git: libz.so.1: no version information available (required by /usr/bin/git)
linux-vdso.so.1 => (0x00007fff872b1000)
libz.so.1 (0x00007f83c9270000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c56000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c55c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c55400000)