CLL
CLL是指Compiler,Linker,Loader的首字母的组合,本专栏重点在于编译、链接、加载。
sif_666
If you can't explain it to a six year old, you don't understand it yourself.
展开
-
CLL-符号修饰与函数签名
我们知道,在c++中,函数是可以重载的,也就是说函数名相同,但参数不同。那么编译器和链接器是怎样区分两个同名的函数的呢?由目标文件的三魂七魄(如果不清楚可以看看这边文章)可以知道,函数名和变量名都是符号(symbol),正是c++的符号修饰(name decoration)机制支持了这种特性。 在c中,现在gcc编译器,函数名的符号一般都是函数名本身,所以c没有函数重载这样的特性。 下面,通过一个实例来说明符号修饰机制 通过g++ -c test.cpp -o test.o编译后,再使用readelf -原创 2020-08-25 08:21:30 · 453 阅读 · 0 评论 -
CLL-目标文件的三魂七魄
本文基于一个简单的目标文件例子,来窥探目标文件的三魂七魄。 文章目录目标文件的整体轮廓ELF HeaderELF文件类型ELF Header描述ELF MagicELF TypeMachineEntry point addressStart of program headersStart of section headersFlagsSize of this headerSize of program headersNumber of program headersSize of section heade原创 2020-08-19 21:11:20 · 517 阅读 · 0 评论