C语言代码结构与编程技巧深度解析
1. 动态库关联与符号表查看
文件通常会与多个动态库进行关联。例如,一个文件可能会关联以下三个动态库:
- ld-linux :作为动态库加载器,负责搜索和加载可执行文件所需的所有动态库。
- vdso :即“虚拟动态共享对象”,是一个小型实用库,C标准库会在某些情况下使用它来加速与内核的通信。
- libc :包含标准函数的可执行代码。
由于标准库本身也是一个ELF文件,我们可以使用 readelf 命令来打印其符号表,查看 printf 条目。示例如下:
> readelf -s /lib/x86_64-linux-gnu/libc.so.6 | grep " printf"
596: 0000000000050d50 161 FUNC GLOBAL DEFAULT 12
printf@@GLIBC_2.2.5
1482: 0000000000050ca0 31 FUNC GLOBAL DEFAULT 12
printf_size_info@@GLIBC_2.2.5
1890: 0000000000050480 2070 FUNC GLOBAL DEFAULT 12
printf_size@@GLIBC_2.2.5
其中, @@ 后面的标签标记了符号版本,用于提供同一函数的不同版本。
超级会员免费看
订阅专栏 解锁全文
2183

被折叠的 条评论
为什么被折叠?



