예 를 들어 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
정적 링크가 되도록 바이너리를 이 세 파일과 함께 so
묶는 방법이 있습니까 ?
내 의도는 컨테이너 내부에서 사용하는 것입니다.
답변1
안정제이를 수행할 수 있습니다. 동적으로 연결된 바이너리와 해당 종속성을 번들로 묶습니다. 결과는 바이너리를 먼저 정적으로 빌드한 경우 얻을 수 있는 결과와 완전히 다르지만 원하는 결과를 제공합니다.
"정적" 바이너리를 생성하려면 레이아웃 무작위화를 비활성화해야 합니다.
printf 0 | sudo tee /proc/sys/kernel/randomize_va_space
(그런 다음 원래 값을 복원합니다).
컨테이너에 실제로 원하는 바이너리가 무엇인지에 따라 정적 Busybox와 같은 것을 사용하는 것이 더 간단할 수도 있습니다.
첫 번째 종속성은 관심을 가져야 할 동적 라이브러리가 아니라커널에서 제공되는 vDSO.