Dynamic-Linking

dlopen() 是否通過呼叫動態連結器ld-linux.so 來執行動態連結?

  • September 28, 2020

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.

引用自:https://unix.stackexchange.com/questions/611730