たとえば、これを行うと、cat
次のようにldd $(which cat)
表示されます。
linux-vdso.so.1 (0x00007fff8afbb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb3102dd000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb310524000)
cat
静的リンクになるようにバイナリをこれらの3つのファイルとso
結び付ける方法はありますか?
私の意図はコンテナ内で使用することです。
答え1
安定剤これを行うことができます。動的にリンクされたバイナリとその依存関係をバンドルします。結果は、バイナリを最初に静的に構築した場合に得られる結果とはまったく異なりますが、目的の結果を提供します。
「静的」バイナリを生成するには、レイアウトのランダム化を無効にする必要があります。
printf 0 | sudo tee /proc/sys/kernel/randomize_va_space
(その後、元の値を復元します)。
コンテナに実際に必要なバイナリが何であるかに応じて、静的Busyboxのようなものを使用する方が簡単かもしれません。
最初の依存関係は関心を持たなければならない動的ライブラリではありませんカーネルで提供されるvDSO。