![플래그/옵션이 연결된 경우 프로그램의 모든 라이브러리 종속성과 구성을 어떻게 나열할 수 있습니까?](https://linux55.com/image/203496/%ED%94%8C%EB%9E%98%EA%B7%B8%2F%EC%98%B5%EC%85%98%EC%9D%B4%20%EC%97%B0%EA%B2%B0%EB%90%9C%20%EA%B2%BD%EC%9A%B0%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%A2%85%EC%86%8D%EC%84%B1%EA%B3%BC%20%EA%B5%AC%EC%84%B1%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%82%98%EC%97%B4%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
종속성을 변경하는 argv를 얻은 경우에도 프로그램의 모든 종속성(라이브러리) 및 구성을 어떻게 나열할 수 있습니까?
답변1
프로그램이 GNU C 라이브러리의 동적 링커( ld.so
)를 사용하는 경우 이를 실행하고 다음 설정을 통해 로드되는 모든 라이브러리를 추적할 수 있습니다 LD_DEBUG=libs
.
LD_DEBUG=libs yourcommand --args
이를 통해 프로그램 매개변수를 변경하면 로드되는 라이브러리가 변경되는지 여부를 결정할 수 있습니다.
표시된 모든 라이브러리는 ldd /path/to/yourcommand
항상 로드되며 프로그램 매개변수에 따라 변경되지 않습니다. 로드된 라이브러리를 사용하면 dlopen
차이가 있을 수 있으며 이는 이 기술을 사용하여 표시됩니다.
어떤 구성 파일을 읽었는지 알고 싶다면 다음을 사용하세요 strace
.
strace -e open yourcommand --args