반응형
소프트웨어를 배포하거나 로컬 환경에서 특정 바이너리를 실행할 때, 필요한 라이브러리(의존성)가 누락되어 문제가 생기는 경우가 많습니다. 이 글에서는 운영체제별로 바이너리 의존성을 확인하는 방법을 소개합니다.
📌 바이너리 의존성이란?
바이너리는 일반적으로 다른 공유 라이브러리에 의존합니다. 예를 들어, 리눅스에서 컴파일된 실행 파일은 libc.so나 libpthread.so 등 여러 라이브러리와 연결되어 있어야 정상적으로 실행됩니다.
이러한 외부 의존성을 확인하는 것은 다음과 같은 상황에서 매우 중요합니다:
- 실행 파일이 다른 시스템에서 작동하는지 확인할 때
- 컨테이너 이미지 최적화 및 디버깅
- 배포 패키지에 필요한 라이브러리를 모두 포함했는지 검토할 때
🐧 리눅스: ldd 명령어
ldd ./my_binary
이 명령은 바이너리가 동적으로 링크된 라이브러리를 보여줍니다.
예시 출력
linux-vdso.so.1 => (0x00007ffd2a3f0000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8ad3a23000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8ad3654000)
📌 주의: ldd는 실행 가능한 바이너리여야만 작동합니다. 정적 링크된 바이너리는 의존성을 표시하지 않습니다.
🍎 macOS: otool -L
macOS에서는 otool을 사용하여 바이너리의 동적 라이브러리를 확인할 수 있습니다.
otool -L ./my_binary
예시 출력
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
@rpath/libexample.dylib (compatibility version 1.0.0, current version 1.2.3)
💡 @rpath, @loader_path, @executable_path 등 macOS 특유의 경로 지정도 함께 확인할 수 있습니다.
🔧 팁: 정적 vs 동적 링크 여부 확인
- 정적 링크된 바이너리는 외부 의존성이 거의 없습니다.
- 리눅스에서 file 명령으로 확인할 수 있습니다
file ./my_binary
예시
ELF 64-bit LSB executable, dynamically linked, ...
반응형
'IT > OS' 카테고리의 다른 글
SFTP는 허용하고 SSH는 차단할 수 있을까? 🔒 가능 여부와 설정 방법 정리 (0) | 2025.07.10 |
---|---|
[리눅스 서버] 디렉토리 용량 확인하는 5가지 방법 총정리 (du, df 명령어 완벽 가이드) (0) | 2025.07.01 |
서버 접속 시 Your must change your password now and login again' 오류 해결 방법 (0) | 2025.07.01 |
🔒 서버에서 오픈 포트 확인 및 차단하는 방법 (0) | 2025.06.29 |