成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

elf文件格式如何打開 so格式文件是什么文件?

so格式文件是什么文件?所以文件格式是elf文件怎么編輯?編寫C、C語言或匯編源程序,用gcc或G生成目標(biāo)文件,編寫連接腳本文件,用連接器生成最終目標(biāo)文件(文件頭是什么?首先,解釋為什么可執(zhí)行文件需要

so格式文件是什么文件?

所以文件格式是

elf文件怎么編輯?

編寫C、C語言或匯編源程序,用gcc或G生成目標(biāo)文件,編寫連接腳本文件,用連接器生成最終目標(biāo)文件(

文件頭是什么?

首先,解釋為什么可執(zhí)行文件需要一個頭文件。

對于可執(zhí)行文件,操作系統(tǒng)在執(zhí)行它之前需要知道:

1、要看操作系統(tǒng)版本,比如有的只能在DOS下運行,有的可以在Windows下運行;有些必須在64位環(huán)境下運行等等。

2.它的入口在哪里?不是所有可執(zhí)行文件的入口都在文件的前面,也有在中間或者后面的,所以需要描述一些東西。

3.其中哪部分是代碼,哪部分是數(shù)據(jù),因為通常對于代碼來說,代碼部分應(yīng)該是只讀的,數(shù)據(jù)部分是可讀寫的。

4.哪些數(shù)據(jù)需要初始化為0?通常在可執(zhí)行文件中,有一個叫BSS段的部分,需要操作系統(tǒng)在加載可執(zhí)行文件時清除BSS。

5.運行時的虛擬地址是什么,如果無法加載到指定的地址(重定向表),操作系統(tǒng)該怎么辦。

6.初始寄存器值是多少?

……

因此,為了描述這些信息,有必要在可執(zhí)行文件中添加一個文件頭。否則,操作系統(tǒng)將無確加載和運行可執(zhí)行文件。

那么有沒有一個可執(zhí)行文件不 不需要標(biāo)題?答案是肯定的。

我記得兩件事:

首先是DOS時代的COM文件。這個文件的條目是它的第一個字節(jié)。大部分寄存器都是自己初始化的,大小不允許超過一個16位的段大小(64KB),所以功能非常有限。

另一個是嵌入式開發(fā)用的BIN文件,其條目是它的第一個字節(jié)。有些BIN文件可以自己初始化段寄存器,所以基本上可以認為是沒有文件頭的可執(zhí)行代碼。但是因為bIN沒有統(tǒng)一的規(guī)范,所以BIN文件有沒有頭很難說。

然后,解釋為什么不同系統(tǒng)的文件頭不一樣。

一方面,由于歷史原因,不同的操作系統(tǒng)各自為戰(zhàn),造成了不同的格式。但更本質(zhì)的原因是不同的操作系統(tǒng)環(huán)境。例如,在WindowsXP32位系統(tǒng)中,在虛擬地址空間中,用戶地址占用0x00000000-0x7FFFFFFF的地址范圍,內(nèi)核空間地址是0x80000000-0xFFFFFFFF的地址范圍,用戶空間是2GB,內(nèi)核空間是2GB,通常是默認的。但是,在Linux中,用戶空間是3GB,內(nèi)核空間是1GB。這種內(nèi)存分配的差異導(dǎo)致很多事情都不一樣,包括可執(zhí)行文件的入口地址范圍、可用內(nèi)存等。所以Linux中的ELF文件和Windows中的PE文件不能定義的完全一樣。和PE格式都包含一個DOS文件頭,這在Linux中是沒有的。在PE中,要指定Windows子系統(tǒng)的類型,Linux肯定不會支持。而且,DLL庫和SO庫是不同的。所以,基于以上原因,不同操作系統(tǒng)的可執(zhí)行文件頭文件格式是不一樣的。