Alpine Linux で適当なバイナリを持ってきて動かしてみた備忘録です.
まずは結論から.
たまには Linux でもソースコードからコンパイルじゃなくて,適当なバイナリ持ってきて動かしたいってときもあるんですが,こういうときは,まずは,
# apk add libc6-compat (1/1) Installing libc6-compat (1.1.19-r10) OK: 90 MiB in 53 packages
としましょう.Alpine Linux の場合,glibc じゃなくて,musl libc が使われてるからです.これで必要なシンボリックリンクが張られます.
あとは,
# ldd test /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000) libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000) librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000) libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000) Error loading shared library libstdc++.so.6: No such file or directory (needed by monitorlm) libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000) Error loading shared library libgcc_s.so.1: No such file or directory (needed by monitorlm) libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f63130b8000)
とかして,足りない共有ライブラリが何かを探せば OK です.この例だと libstdc++.so.6 と libgcc_s.so.1 が無いみたいなので,
# apk add libstdc++ fetch http://dl-3.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz (1/2) Installing libgcc (6.4.0-r9) (2/2) Installing libstdc++ (6.4.0-r9) OK: 90 MiB in 53 packages
としてやれば解決します.
以上!