我有一個關於ELF動態符號表的問題。對於類型爲FUNC的符號,我注意到某些二進制文件中的值爲0。但在其他二進制文件中,它有一些非零值。這兩個二進制文件都是由gcc生成的,我想知道爲什麼這個區別?有沒有編譯器選項來控制它?ELF動態符號表
編輯:這是readelf --dyn-SYMS的輸出PROG1的 「printf的」 符號是82f0這恰好是對printf的PLT表項的地址
Symbol table '.dynsym' contains 5 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
2: 000082f0 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4 (2)
3: 00008314 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4 (2)
4: 000082fc 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4
這裏值。 readelf --dyn-SYMS的
輸出PROG2
Symbol table '.dynsym' contains 6 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
2: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4 (2)
3: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4 (2)
4: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4 (2)
5: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.4
這裏的值,所有符號都爲零。
什麼是創建prog1和prog2的確切命令? – Jens
prog2:gcc -o prog2 prog2.c。但關於prog1,我不知道。我想知道是否有任何選項來創建這樣的二進制文件。 –