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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc默认链接到libc.a或libc.so吗?相关的知识,希望对你有一定的参考价值。

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

gcc -o prog prog.c

GCC自动链接到C标准库,所以我没有专门这样做。

  1. 如何查看gcc链接到哪个C库,libc.a或libc.so,还是其他什么?
  2. 在什么情况下它链接到libc.so?是否需要像其他共享库一样在运行时指定libc.so?

提前致谢。

答案

如何查看哪个C库与gcc链接,libc.a或libc.so或其他什么?

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

它在什么情况下链接到libc.so?

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

是否需要像其他共享库一样在运行时指定libc.so?

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

以上是关于gcc默认链接到libc.a或libc.so吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )(代

Android 逆向Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )(代

CodeTyphonGCC编译出现 undefined reference to `__libc_csu_init' 和 `__libc_csu_fini'的解决方法

为啥 STM32 gcc 链接器脚本会自动丢弃这些标准库中的所有输入节:libc.a、libm.a、libgcc.a?

/lib64/libc.so.6: version `GLIBC_2.14‘ not found

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代