我的代码在 test.c 中:
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
从中编译的可执行文件所依赖的动态共享库是:
$ gcc -o test test.c
$ ldd test
linux-gate.so.1 => (0x00783000)
libc.so.6 => /lib/libc.so.6 (0x00935000)
/lib/ld-linux.so.2 (0x00ea5000)
Run Code Online (Sandbox Code Playgroud)
main属于哪个库?/lib/libc.so.6?return属于哪个图书馆?/lib/libc.so.6?谢谢!
linux-gate.so并不是真正的共享库,而是内核的一部分,其作用类似于共享库,并使快速系统调用成为可能。ld-linux.so是一段可以加载其他共享库的代码。libc.so是 C 库,包含标准函数,如printf和strcpy。main不属于任何图书馆。它属于您的程序,因为它的汇编版本完全存储在test二进制文件中。return不是一个函数,而是一个 C 语言结构。libgcc,这显然不是您系统上的共享库(或者它会显示)和一些启动代码。g++另外还会链接libstdc++.so(C++ 标准库)和libm.so(C 标准库的数学部分)。