一、源代碼文件如下圖
二、使用file命令查看文件類型
分析:編譯後的目標文件類型爲ELF-X86類型
三、使用objdump –d 進行反彙編
分析:
1、 目標文件類型爲ELF-X86
2、 <mian>下面的callq包含重定位項,也就是2個函數的入口地址
四、objdump –hrt 查看目標文件佈局圖
分析:
1、.bss 沒有初始化和初始化爲0的全局變量(bss類型的全局變量只佔內存空間,而不佔文件空間)
2、.data 很明顯就是數據段,裏面存放着數據。(如果數據爲0,爲了優化考慮,編譯器會把他當作bss處理)。data段存放初始化過的(非0)的全局變量。data類型的全局變量佔用文件空間,運行時佔用內存空間。
3、rodata 只讀數據段,他是多個進程間共享的,這樣可以提高空間利用率。
4、段-size:
.text 7b
.data 04
.bss 0
.rodata 1e