我正在用gcc hello.c -o hello -O3编译这段代码
#include <stdio.h>
int main(void) {
printf("Hello world\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我列出我得到的重新安置时:
test@southpark$ readelf -r hello | grep gmon
080495a4 00000106 R_386_GLOB_DAT 00000000 __gmon_start__
080495b4 00000107 R_386_JUMP_SLOT 00000000 __gmon_start__
Run Code Online (Sandbox Code Playgroud)
当我列出这个文件中的符号时,我得到:
test@southpark$ readelf -s hello | grep gmon
1: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
48: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
Run Code Online (Sandbox Code Playgroud)
gmon_start与gprof有什么共同点吗?即使我没有使用-pg或-g编译/链接,为什么还要对该符号进行重定位?哪个库可以解析这个符号?
当我尝试调试可执行文件时:
(gdb) break +1
No symbol table is loaded. Use the "file" command.
Run Code Online (Sandbox Code Playgroud)
这究竟是什么意思?
符号表是否附加到可执行文件?