Dynamic-Linking
dlopen()
是否通過呼叫動態連結器ld-linux.so
來執行動態連結?
CSAPP 說
Linux 系統為動態連結器提供了一個簡單的介面,允許應用程序在執行時載入和連結共享庫。
#include <dlfcn.h> void *dlopen(const char *filename, int flag);
返回:如果OK,則指向句柄,錯誤則為NULL
是否
dlopen()
通過呼叫動態連結器執行動態連結ld-linux.so
?是 呼叫執行動態連結
ld-linux.so
的動態連結器嗎?dlopen()
謝謝。
dlopen
由 提供libdl
,但在幕後,至少使用 GNU C 庫實現,後者依賴於提供的符號ld-linux.so
來執行動態連結。如果dlopen
從動態連結的程序中呼叫,ld-linux.so
則已載入,因此它直接使用這些符號;如果它是從靜態連結程序呼叫的,它會嘗試載入ld-linux.so
.