0

我有以下程序:

# include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello World!\n");
    return 0;
}

我编译它(动态链接)并ldda.out. 我看见:

linux-vdso.so.1
libc.so.6
ld-linux-x86-64.so.2
  • 第一个是内核提供的虚拟共享对象。
  • 第二个是C标准库。
  • 第三个是动态链接器。

我不确定第一个和第三个如何受到静态链接的影响,我想知道是否使用了整个标准库,即使我只包含一个标头。

如果我静态链接这个程序,生成的二进制文件会

  • 包含linux-vdso.so.1,即使它是由内核提供的?
  • 包含整个 C 标准库,即使我只包含<stdio.h>?
  • 包含ld-linux-x86-64.so.2,即使它用于运行动态链接的程序?
4

0 回答 0