基于linux程序中段的學(xué)習(xí)總結(jié)詳解
更新時(shí)間:2013年05月23日 16:16:08 作者:
本篇文章是對(duì)linux程序中段的學(xué)習(xí)進(jìn)行了詳細(xì)的總結(jié)與分析,需要的朋友參考下
linux程序的段陸陸續(xù)續(xù)接觸過一些,今天適當(dāng)?shù)目偨Y(jié)一下,時(shí)間倉(cāng)促,總結(jié)的比較零散。
linux 段:
text:已編譯程序的機(jī)器代碼。
.rodata:只讀數(shù)據(jù)。printf中的格式串,或者開關(guān)語句的跳轉(zhuǎn)表。
data:已初始化的全局變量。
bss:未初始化的全局變量。
symtab:符號(hào)表。
注意:
1、如果定義一個(gè)全局變量,int i = 0;它被初始化為0,但是,它卻不是放在data段中的,而是放在bss段中的。因?yàn)榫幾g器可能會(huì)做一些優(yōu)化,如果初始化為0,則它會(huì)將它等同于未初始化的變量。這樣的可能要求他會(huì)將所有未初始化的全局變量(bss段)初始化為0?!沁@個(gè)可能會(huì)和編譯器有關(guān)系。
2、對(duì)于static全局變量,它在符號(hào)表中有一個(gè)屬性表示他是local的,不是global。local的符號(hào)式不允許被其他的文件引用的。
3、static定義的局部變量,編譯器會(huì)把它作為static全局變量來處理。它在符號(hào)表中是出現(xiàn)的(局部變量是不出現(xiàn)的)。唯一不同的是,它會(huì)把它在符號(hào)表中的名字改掉,一般會(huì)增加一個(gè)后綴:“.1788”。用這種方法來防止和其他的全局變量重名。而且也可以防止對(duì)它的調(diào)用。
4、段是有對(duì)齊的。如果定義一個(gè)char字符,會(huì)發(fā)現(xiàn)它有時(shí)會(huì)增加四個(gè)字節(jié),之后定義,段大小便不再增加。
5、查看程序段的工具包括:readelf,objdump(加上-t可以查看變量屬于哪個(gè)段),size(可以查看各個(gè)段的大小。)
linux 段:
text:已編譯程序的機(jī)器代碼。
.rodata:只讀數(shù)據(jù)。printf中的格式串,或者開關(guān)語句的跳轉(zhuǎn)表。
data:已初始化的全局變量。
bss:未初始化的全局變量。
symtab:符號(hào)表。
注意:
1、如果定義一個(gè)全局變量,int i = 0;它被初始化為0,但是,它卻不是放在data段中的,而是放在bss段中的。因?yàn)榫幾g器可能會(huì)做一些優(yōu)化,如果初始化為0,則它會(huì)將它等同于未初始化的變量。這樣的可能要求他會(huì)將所有未初始化的全局變量(bss段)初始化為0?!沁@個(gè)可能會(huì)和編譯器有關(guān)系。
2、對(duì)于static全局變量,它在符號(hào)表中有一個(gè)屬性表示他是local的,不是global。local的符號(hào)式不允許被其他的文件引用的。
3、static定義的局部變量,編譯器會(huì)把它作為static全局變量來處理。它在符號(hào)表中是出現(xiàn)的(局部變量是不出現(xiàn)的)。唯一不同的是,它會(huì)把它在符號(hào)表中的名字改掉,一般會(huì)增加一個(gè)后綴:“.1788”。用這種方法來防止和其他的全局變量重名。而且也可以防止對(duì)它的調(diào)用。
4、段是有對(duì)齊的。如果定義一個(gè)char字符,會(huì)發(fā)現(xiàn)它有時(shí)會(huì)增加四個(gè)字節(jié),之后定義,段大小便不再增加。
5、查看程序段的工具包括:readelf,objdump(加上-t可以查看變量屬于哪個(gè)段),size(可以查看各個(gè)段的大小。)
相關(guān)文章
vsftp上傳553 Could not create file錯(cuò)誤解決
本篇文章給大家分享了在vsftp上傳文件的時(shí)候出現(xiàn)了553 Could not create file錯(cuò)誤,針對(duì)這個(gè)錯(cuò)誤我們給出了解決辦法,一起學(xué)習(xí)下。2017-12-12Linux回收站機(jī)制實(shí)現(xiàn)過程及用法詳解
這篇文章主要介紹了Linux回收站機(jī)制實(shí)現(xiàn)過程及用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則
今天小編就為大家分享一篇關(guān)于使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-09-09ubuntu中swap(虛擬內(nèi)存)設(shè)置方法
這篇文章主要介紹了ubuntu中swap(虛擬內(nèi)存)設(shè)置方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06