開発系コマンド - Himeyama/himeyama GitHub Wiki
ファイルの種類を調べる
$ file $(which pip)
/home/hikari/.pyenv/shims/pip: Bourne-Again shell script, ASCII text executable
file /usr/bin/python3.8
/usr/bin/python3.8: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1f3df9df2b5e575fdee41890fe17f6de614f93f6, for GNU/Linux 3.2.0, stripped
インストールされている共有ライブラリーの確認
$ ldconfig -p
libz3.so.4 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz3.so.4
libz3.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz3.so
libzvbi.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzvbi.so.0
libzvbi-chains.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzvbi-chains.so.0
libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
libzmq.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzmq.so.5
libzmq.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libzmq.so
libzbar.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzbar.so.0
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
libz.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so
libyelp.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyelp.so.0
libyaml-0.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyaml-0.so.2
libyajl.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyajl.so.2
プログラムが依存している共有ライブラリーを表示
$ ldd /usr/bin/ls
linux-vdso.so.1 (0x00007ffd8d17f000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f3147cf8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3147b06000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f3147a76000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3147a70000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3147d65000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3147a4d000)
共有ライブラリーの関数を調べる
例 1: libruby-2.7.so
$ file /lib/x86_64-linux-gnu/libruby-2.7.so
/lib/x86_64-linux-gnu/libruby-2.7.so: symbolic link to libruby-2.7.so.2.7.0
$ readelf -Ws /lib/x86_64-linux-gnu/libruby-2.7.so.2.7 | grep rb_ary_new
614: 00000000000305e0 25 FUNC GLOBAL DEFAULT 12 rb_ary_new_from_values
869: 0000000000030430 283 FUNC GLOBAL DEFAULT 12 rb_ary_new_from_args
1399: 0000000000030420 14 FUNC GLOBAL DEFAULT 12 rb_ary_new
1474: 000000000002ff90 22 FUNC GLOBAL DEFAULT 12 rb_ary_new_capa
例 2: libm.so.6
$ file /lib/x86_64-linux-gnu/libm.so.6
/lib/x86_64-linux-gnu/libm.so.6: symbolic link to libm-2.31.so
$ readelf -Ws /lib/x86_64-linux-gnu/libm-2.31.so | grep " sin"
958: 0000000000033080 77 IFUNC WEAK DEFAULT 16 sin@@GLIBC_2.2.5
nm -C ~/anaconda3/lib/libpython3.9.so | grep Py
nm ~/anaconda3/lib/libpython3.9.so | grep Py