据我所知,动态加载意味着在加载或运行时将库(或任何其他二进制文件)加载到内存中.所以在下面的程序中,当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);
}
Run Code Online (Sandbox Code Playgroud)