小编gau*_*t87的帖子

动态链接和动态加载有什么区别

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

linker operating-system loader

4
推荐指数
2
解决办法
3323
查看次数

标签 统计

linker ×1

loader ×1

operating-system ×1