據我所知 動態加載意味着在加載或運行時加載庫(或任何其他二進制文件)到內存中。所以在下面的程序中,當dlopen()稱爲動態加載程序將進入圖片並且它會將lib加載到內存中,如果庫尚未加載。動態鏈接和動態加載有什麼區別
動態鏈接是指在加載或運行期間完成的鏈接。並解決外部參考。 所以在下面的程序中,dlsym()函數將要求餘弦函數,並且動態鏈接將出現在圖片中並且符號將被解析。
int main(int argc, char **argv) {
void *handle;
double (*cosine)(double);
char *error;
handle = dlopen ("/lib/libm.so.6", RTLD_LAZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}
cosine = dlsym(handle, "cos");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
根據我的知識,ldd命令用於打印共享庫依賴關係,因此通過動態鏈接實現對共享庫的訪問。因此,所有必需的共享庫(如** libc **)在程序開始執行之前確定並解析被稱爲動態鏈接,我對嗎? – gauramit87