開発系コマンド - 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