【发布时间】:2020-02-27 14:54:51
【问题描述】:
我正在学习 VDSO,写了一个简单的应用程序调用 gettimeofday()
#define _GNU_SOURCE
#include <sys/syscall.h>
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
struct timeval current_time;
if (gettimeofday(¤t_time, NULL) == -1)
printf("gettimeofday");
getchar();
exit(EXIT_SUCCESS);
}
二进制文件上的ldd显示'linux-vdso'
$ ldd ./prog
linux-vdso.so.1 (0x00007ffce147a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6ef9e8e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6efa481000)
我找到了 libvdso 库,但我的文件系统中没有这样的库。
sudo find / -name 'linux-vdso.so*'
图书馆在哪里?
【问题讨论】:
标签: c linux linux-kernel shared-libraries