因此,在 Linux 上,当使用 gcc 编译/链接的 C++ 程序加载其可执行文件时,会发生以下情况:
- 执行*系统调用
- 加载了 LD 动态库
- C++ 静态初始化
- 主入口点
假设我有一些原型功能void f()
,
是否有某种方式(通过源修改、属性、编译器/链接器选项等)将可执行文件与 f 链接,以便在第 1 步和第 2 步之间执行?
第 2 步和第 3 步之间呢?
(显然没有标准的方法可以做到这一点,我要求为最新版本的 gcc/linux/x86_64/glibc/binutils 提供平台特定、编译器特定的方式)