在linux中,軟件的格式是“ELF”;ELF是可執(zhí)行連接文件格式,主要用于描述文件結(jié)構(gòu),是Linux、SVR4和“Solaris2.0”默認(rèn)的目標(biāo)文件格式;ELF對(duì)節(jié)的定義和gnu工具鏈對(duì)它的支持使它十分靈活,并且支持動(dòng)態(tài)鏈接共享庫。
本文操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux的軟件是什么格式
Linux 下,程序軟件是沒有擴(kuò)展名的。
但格式是有的,叫作 ELF。(主要就是描述文件結(jié)構(gòu),一般人不需要關(guān)注它)
ELF(Executable and Linkable Format)即可執(zhí)行連接文件格式,是一種比較復(fù)雜的文件格式,但其應(yīng)用廣泛。與linux下的其他可執(zhí)行文件(a.out,cof)相比,它對(duì)節(jié)的定義和gnu工具鏈對(duì)它的支持使它十分靈活,它保存的足夠了系統(tǒng)相關(guān)信息使它能支持不同平臺(tái)上的交叉編譯和交叉鏈接,可移植性很強(qiáng).同時(shí)它在執(zhí)行中支持動(dòng)態(tài)鏈接共享庫。
ELF文件簡(jiǎn)介
ELF(Executable and Linkable Format)即可執(zhí)行連接文件格式,是Linux,SVR4和Solaris2.0默認(rèn)的目標(biāo)文件格式,目前標(biāo)準(zhǔn)接口委員會(huì)TIS已將ELF標(biāo)準(zhǔn)化為一種可移植的目標(biāo)文件格式,運(yùn)行于32-bit Intel體系微機(jī)上,可與多種操作系統(tǒng)兼容。分析elf文件有助于理解一些重要的系統(tǒng)概念,例如程序的編譯和鏈接,程序的加載和運(yùn)行等。
(1)ELF文件類型:
種類型的ELF文件:
a)可重定位文件:用戶和其他目標(biāo)文件一起創(chuàng)建可執(zhí)行文件或者共享目標(biāo)文件,例如lib*.a文件。
b)可執(zhí)行文件:用于生成進(jìn)程映像,載入內(nèi)存執(zhí)行,例如編譯好的可執(zhí)行文件a.out。
c)共享目標(biāo)文件:用于和其他共享目標(biāo)文件或者可重定位文件一起生成elf目標(biāo)文件或者和執(zhí)行文件一起創(chuàng)建進(jìn)程映像,例如lib*.so文件。
(2)ELF文件作用:
ELF文件參與程序的連接(建立一個(gè)程序)和程序的執(zhí)行(運(yùn)行一個(gè)程序),所以可以從不同的角度來看待elf格式的文件:
a)如果用于編譯和鏈接(可重定位文件),則編譯器和鏈接器將把elf文件看作是節(jié)頭表描述的節(jié)的集合,程序頭表可選。
b)如果用于加載執(zhí)行(可執(zhí)行文件),則加載器則將把elf文件看作是程序頭表描述的段的集合,一個(gè)段可能包含多個(gè)節(jié),節(jié)頭表可選。
c)如果是共享文件,則兩者都含有。