日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ELF介绍

發布時間:2023/12/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ELF介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一?點睛

ELF是一種用于二進制文件、可執行文件、目標代碼、共享庫和核心轉儲的標準文件格式。

ELF標準的目的是為軟件開發人員提供一組二進制接口定義,這些接口可延伸到多種操作系統中,從而減少重新編碼、編譯程序的需要。

ELF指的是一種文件格式,常用的擴展名為:o,so,elf,prx

二?ELF文件組成部分

ELF文件由4部分組成:

  • ELF頭(ELF header)

  • 程序頭表(Program header table)

  • 節(Section)

  • 節頭表(Section header table)

實際上,一個文件中不一定包含全部內容,而且他們的位置也未必如同所示這樣安排,只有ELF頭的位置是固定的,其余各部分的位置、大小等信息由ELF頭中的各項值來決定。

三?ELF文件類型

有三種文件類型

1?可重定位的目標文件

由匯編器匯編生成的.o文件。

參考:https://www.cnblogs.com/pacoson/p/4893172.html

2?可執行文件

鏈接器拿一個或多個可定位的目標文件作為輸入,經鏈接處理后,生成一個可執行的目標文件。

3?可被共享的目標文件

就是所謂的動態庫文件,也即.so文件。

動態庫發揮作用的過程必須經過兩個步驟:

步驟一:鏈接器拿動態庫和其他可重定位的文件(.o文件)以及其他.so文件作為輸入,經過鏈接后,生成另外的可共享的目標文件(.so)或者可執行的目標文件。

步驟二:在運行時,動態鏈接器拿它和一個可執行的目標文件以及另外一些可共享的目標文件一起處理,在Linux系統中創建一個進程映像。

四?ELF對象文件組成

有兩種視圖來說明ELF的組成格式

鏈接視圖

執行視圖

ELF頭部

ELF頭部

程序頭部表(可選)

程序頭部表

節區1

節區1

...

...

節區n

節區n

...

...

...

...

節區頭部表

節區頭部表(可選)

表中展示了左右兩個很類似的部分來說明ELF的組成格式。為什么需要兩種格式呢?這是因為ELF格式需要使用在兩種場景:

場合一:組成不同的重定位文件,以參與可執行文件或者可被共享的對象文件的鏈接構建。

場合二:組成可執行文件或者可被共享對象文件,以在運行時內存中進程映像的構建。

所以,基本上,表中左邊部分表示的是可重定位文件的格式,而右邊是可執行文件以及可被共享的對象文件的格式。ELF文件頭被固定地放在不同類對象文件的最前面。因此,可以用file命令來看文件是屬于哪種ELF文件

五?實戰

1?生成各類文件

# 生成add.o和sub.o g++ -c add.cpp g++ -c sub.cpp ar cr libmymath.a sub.o add.o # 生成main g++ -o main main.cpp -L.lmymath # 生成libmymath.so g++ -fPIC -shared -o libmymath.so add.cpp sub.cpp

2?查看add.o、sub.o、main、libmymath.so屬于哪種ELF

[root@localhost 0401]# ll total 52 -rw-r--r--. 1 root root 62 May 11 11:35 add.cpp -rw-r--r--. 1 root root 66 May 11 11:34 add.h -rw-r--r--. 1 root root 1248 May 11 11:26 add.o -rw-r--r--. 1 root root 2714 May 11 11:42 libmymath.a -rwxr-xr-x. 1 root root 7928 May 11 11:50 libmymath.so -rwxr-xr-x. 1 root root 9312 May 11 11:48 main -rw-r--r--. 1 root root 230 May 11 11:40 main.cpp -rw-r--r--. 1 root root 61 May 1 08:52 sub.cpp -rw-r--r--. 1 root root 67 May 1 08:52 sub.h -rw-r--r--. 1 root root 1248 May 11 11:26 sub.o # 查看add.o、sub.o、main、libmymath.so的內容 [root@localhost 0401]# file add.o sub.o libmymath.so main add.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped sub.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped libmymath.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ce377dde3db662656e8c82c87bb205a883fac582, not stripped main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=7983836b44944a18e597635b8088d2926167e671, not stripped

add.o sub.o是可重定位文件。

libmymath.so是可被共享文件。

main是可執行文件。

總結

以上是生活随笔為你收集整理的ELF介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲成人av网址 | 亚一区| 成人在线视频观看 | 区一区二区三 | 日本一本高清视频 | 日本美女一级视频 | 九月激情网 | 91视频在线观看免费 | 欧美日韩一区在线播放 | 日韩极品视频在线观看 | 婷婷丁香在线 | 日本成人社区 | 亚洲videos | 亚洲日本国产精品 | 黑巨茎大战欧美白妞 | 浪漫樱花动漫在线观看免费 | 好吊色视频一区二区 | 欧美又粗又深又猛又爽啪啪九色 | 蜜乳av 懂色av 粉嫩av | 国产一区视频观看 | 亚洲人成小说 | 黄色污污网站在线观看 | 女十八毛片 | 热逼视频| 亚洲国产精品成人综合色在线婷婷 | 1024亚洲天堂| 中文字幕乱码人妻无码久久95 | 中文字字幕一区二区三区四区五区 | 野外做受又硬又粗又大视频√ | 日韩电影三级 | 国产国语videosex另类 | 白丝校花扒腿让我c | 天堂中文字幕av | 老熟妇精品一区二区三区 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 日本护士取精xxxxxhd | 麻豆久久久久久久久久 | 国产高清99| 亚洲日本中文字幕 | 日韩欧美成人一区二区 | 捆绑调教视频网站 | www国产 | 欧美三级久久久 | 天天爱天天做天天爽 | 国产日韩欧美综合 | 玖玖爱免费视频 | 国产精品老牛影院99av | 国产免费自拍 | 久久久久久久 | 波多野结衣一区二区三区 | 99精品区 | 51福利视频 | 91偷拍精品一区二区三区 | 最新中文字幕在线 | 奶罩不戴乳罩邻居hd播放 | 午夜免费网 | 欧美日韩在线一区二区 | 永久免费视频网站 | av福利社| 日韩女女同性aa女同 | 99av国产精品欲麻豆 | 尤物视频在线看 | 在线观看欧美精品 | 老妇free性videosxx| 成人夜色 | hs网站在线观看 | 久久黄色小视频 | 狠狠撸在线观看 | 亚洲最大毛片 | 超碰在线观看av | 插插插91| 在线观看色 | 99精品网站 | 黄色91免费观看 | 国产大奶在线 | 久草91| 男女激情实录 | 91淫黄大片 | 精品久久久久久久久久久久久久久久 | 一区二区三区四区国产 | 国产精品久久久久久久毛片 | 伊人久久国产精品 | www.精品一区 | 天天综合网久久综合网 | 按摩害羞主妇中文字幕 | 99av视频| www.狠狠干 | 超碰97人人爱 | 国产乱码精品一区二区三区亚洲人 | 国产三级av片| 久久久五月天 | 香蕉人妻av久久久久天天 | 国产精品一区二区在线看 | 麻豆传媒一区 | 日韩在线精品视频一区二区涩爱 | 久久在草 | 日日躁夜夜躁白天躁晚上躁91 | 成全世界免费高清观看 | 久久久久久久久久网 |