gcc 是否默认链接到 libc.a 或 libc.so?

Does gcc links to libc.a or libc.so by default?

我在 Ubuntu 16.04 64 位上使用 gcc 5.4.0。当我编译程序时:

gcc -o prog prog.c

GCC 自动 links 到 C 标准库,所以我不必专门这样做。

  1. 我如何查看 gcc link 反对 libc.a 或 libc.so 或其他什么的 C 库?
  2. 在什么情况下link变为libc.so?是否需要像其他共享库一样在运行时指定libc.so?

提前致谢。

How can I see which C library does gcc links against to, libc.a or libc.so, or something else?

您可以使用ldd 命令查看所有链接的共享库。如果找到 libc.so,则为动态链接。

In what circumstance does it links to libc.so?

gcc 默认使用动态链接并链接到 libc.so。如果你想要静态链接,传递 -static 标志。

Does libc.so need to be specified at run time like other shared libraries?

通常不会,因为它是由编译器自动配置的。