프로그램이 사용하는 「공유 라이브러리(.so 파일)」가 모인 곳입니다.
C의 libc, 수학의 libm, OpenSSL의 libssl 같은 핵심 라이브러리가 여기.
윈도우의 .dll에 해당.
분리.
/lib는 핵심·부팅에 필요한 라이브러리, /usr/lib는 추가 라이브러리.
/lib64는 64비트 시스템에서 64비트 라이브러리(32비트 호환 위해).
모던 리눅스는 /lib → /usr/lib 통합 추세.
공유 라이브러리의 의미.
한 라이브러리(예: libc.so)를 여러 프로그램이 공유 — 메모리·디스크 절약.
또 보안 패치 한 번에 모든 프로그램이 적용.
윈도우의 「DLL hell」(여러 버전 충돌) 문제는 리눅스에서도 있지만 패키지 매니저가 잘 관리.
ldd 명령.
ldd /usr/bin/python3 — 그 프로그램이 어떤 라이브러리를 사용하는지 확인.
「누가 무엇에 의존」하는지 디버깅에 유용.
라이브러리 빠지면 「error while loading shared libraries」 에러.
동적 링크 vs 정적 링크.
일반 리눅스 프로그램은 동적 링크 — 실행 시 .so 라이브러리 로드.
정적 링크는 라이브러리 코드를 실행 파일에 포함 — 단독 실행 가능하지만 크고 보안 패치 못 받음.
Go 같은 언어는 기본 정적, C는 보통 동적.
한 줄 요약
/lib·/usr/lib는 공유 라이브러리(.so) 모음.
여러 프로그램 공유로 메모리·디스크 절약 + 보안 패치 일괄.
ldd로 의존성 확인, 동적 링크가 표준.
윈도우 .dll에 해당.
더 알아볼 것
- LD_LIBRARY_PATH 환경변수
- RPATH·RUNPATH로 검색 경로
- 정적 링크 binary 만들기