Izz*_*zzo 1 gcc system-calls dynamic-linking
假设我编写了一个无意义的程序,其特征是单个系统调用open
:
#include <fcntl.h>
void main()
{
int hi = open("does not exist", 0);
}
Run Code Online (Sandbox Code Playgroud)
当我编译程序并对ldd
输出发出命令时,我得到以下信息:
linux-vdso.so.1 (0x00007ffddd741000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6835328000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6835584000)
Run Code Online (Sandbox Code Playgroud)
我只识别该libc.so.6
链接,但不识别其他链接。
这些其他库之一是否包含内核系统调用?或者系统调用函数有可能是静态链接的吗?(似乎不太可能)。
系统调用作为函数是直接可见的,并且它们是这样链接的。每种架构都定义了自己的系统调用调用方式;在 64 位 x86 上,它涉及特定的 CPU 指令SYSCALL
.
C 库为大多数系统调用提供了包装器(以及为少数未包装的系统调用提供的通用系统调用函数),而 \xe2\x80\x99 就是程序链接到的内容。
\n\n 归档时间: |
|
查看次数: |
532 次 |
最近记录: |