![`dlopen()`은 동적 링커 `ld-linux.so`를 호출하여 동적 링크를 수행합니까?](https://linux55.com/image/180879/%60dlopen()%60%EC%9D%80%20%EB%8F%99%EC%A0%81%20%EB%A7%81%EC%BB%A4%20%60ld-linux.so%60%EB%A5%BC%20%ED%98%B8%EC%B6%9C%ED%95%98%EC%97%AC%20%EB%8F%99%EC%A0%81%20%EB%A7%81%ED%81%AC%EB%A5%BC%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
CSAPP 라고
Linux 시스템은 간단한 인터페이스를 제공합니다.동적 링커애플리케이션이 런타임에 공유 라이브러리를 로드하고 링크할 수 있도록 합니다.
#include <dlfcn.h> void *dlopen(const char *filename, int flag);
반환: 성공하면 핸들 포인터, 오류가 있으면 NULL
dlopen()
동적 링커를 호출하여 동적 연결을 수행 합니까 ld-linux.so
?
ld-linux.so
동적 연결을 수행하는 동적 링커를 호출하고 있습니까 ?dlopen()
감사해요.
답변1
dlopen
에서 제공 libdl
하지만 그 배후에서는 최소한 제공된 기호를 사용하여 ld-linux.so
동적 연결을 수행하는 GNU C 라이브러리를 사용하여 구현됩니다. dlopen
동적 링커에서 호출 되면 ld-linux.so
이미 로드되어 있으므로 기호를 직접 사용하고, 정적 링커에서 호출하면 로드를 시도합니다 ld-linux.so
.