【发布时间】:2014-02-08 11:53:28
【问题描述】:
据我了解 动态加载意味着在加载或运行时将库(或任何其他二进制文件)加载到内存中。所以在下面的程序中,当调用动态加载器的 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);
}
【问题讨论】:
标签: linker operating-system loader