A. linux下運行elf的可執行文件,都調用了哪些系統調用
ELF(Executable and Linking Format)是一種對象文件的格式,用於定義不同類型的對象文件(Object files)中都放了什麼東西、以及都以什麼樣的格式去放這些東西。它自最早在 System V 系統上出現後,被 xNIX 世界所廣泛接受,作為預設的二進制文件格式來使用。可以說,ELF是構成眾多xNIX系統的基礎之一,所以作為嵌入式Linux系統乃至內核驅動程序開發人員,你最好熟悉並掌握它。
其實,關於ELF這個主題,網路上已經有相當多的文章存在,但是其介紹的內容比較分散,使得初學者不太容易從中得到一個系統性的認識。為了幫助大家學習,我這里打算寫一系列連貫的文章來介紹ELF以及相關的應用。這是這個系列中的第一篇文章,主要是通過不同工具的使用來熟悉ELF文件的內部結構以及相關的基本概念。後面的文章,我們會介紹很多高級的概念和應用,比方動態鏈接和載入,動態庫的開發,C語言Main函數是被誰以及如何被調用的,ELF格式在內核中的支持,Linux內核中對ELF section的擴展使用等等。
好的,開始我們的第一篇文章。在詳細進入正題之前,先給大家介紹一點ELF文件格式的參考資料。在ELF格式出來之後,TISC(Tool Interface Standard Committee)委員會定義了一套ELF標准。你可以從這里(http://refspecs.freestandards.org/elf/)找到詳細的標准文檔。TISC委員會前後出了兩個版本,v1.1和v1.2。兩個版本內容上差不多,但就可讀性上來講,我還是推薦你讀 v1.2的。因為在v1.2版本中,TISC重新組織原本在v1.1版本中的內容,將它們分成為三個部分(books):
a) Book I
介紹了通用的適用於所有32位架構處理器的ELF相關內容
b) Book II
介紹了處理器特定的ELF相關內容,這里是以Intel x86 架構處理器作為例子介紹
c) Book III
介紹了操作系統特定的ELF相關內容,這里是以運行在x86上面的 UNIX System V.4 作為例子介紹
值得一說的是,雖然TISC是以x86為例子介紹ELF規范的,但是如果你是想知道非x86下面的ELF實現情況,那也可以在http://refspecs.freestandards.org/elf/中找到特定處理器相關的Supplment文檔。比方ARM相關的,或者MIPS相關的等等。另外,相比較UNIX系統的另外一個分支BSD Unix,Linux系統更靠近 System V 系統。所以關於操作系統特定的ELF內容,你可以直接參考v1.2標准中的內容。
這里多說些廢話:別忘了 Linus 在實現Linux的第一個版本的時候,就是看了介紹Unix內部細節的書:《The of the Unix Operating System》,得到很多啟發。這本書對應的操作系統是System V 的第二個Release。這本書介紹了操作系統的很多設計觀念,並且行文簡單易懂。所以雖然現在的Linux也吸取了其他很多Unix變種的設計理念,但是如果你想研究學習Linux內核,那還是以看這本書作為開始為好。這本書也是我在接觸Linux內核之前所看的第一本介紹操作系統的書,所以我極力向大家推薦。(在學校雖然學過操作系統原理,但學的也是很糟糕最後導致期末考試才四十來分,記憶彷彿還在昨天:))
好了,還是回來開始我們第一篇ELF主題相關的文章吧。這篇文章主要是通過使用不同的工具來分析對象文件,來使你掌握ELF文件的基本格式,以及了解相關的基本概念。你在讀這篇文章的時候,希望你在電腦上已經打開了那個 v1.2 版本的ELF規范,並對照著文章內容看規范里的文字。
B. linux下的執行文件不包括
linux下的執行文件不包括網路文件。根據查詢相關公開信息顯示,inux下的執行文件是沒有後綴,linux可以自動識別文件類型,有很多類型都不用加後綴,只要設了執行許可權,有elf文件頭,就可以看成可執行文件,要是純文本文件也可以看成是可執行的腳本。
C. 在匯編語言中ELF段指的是什麼
你好!
ELF
是linux
下的可執行文件格式,不是什麼匯編語言段
如果對你有幫助,望採納。
D. 什麼是linux內核
Linux是由Linus Torvalds開發的類UNIX的操作系統,Linux主要特點是開源的,因此我們可以免費使用來當做伺服器。
Linux嚴格分為兩個含義。
1.廣泛的Linux是指Linux發行版
2.狹義的Linux是指Linux內核
Linux內核是操作系統的基礎,介於硬體和軟體之間,並且內核位於操作系統中,操作系統將在硬體和軟體之間進行調解,Linux內核是操作系統核心部分的功能。
二:內核的基本性能
1.流程管理
在Linux內核中,程序的執行狀態以進程為單位進行管理。此外,內核為每個進程准備一個名為task_stract結構的數據結構。
2.進程調度程序
可執行狀態等待哪個進程以哪個順序執行,由於基本上不可能運行比CPU數量更多的進程,因此運行過程的效率非常重要。
3.內存管理
在Linux內核中,使用物理內存和虛擬內存管理數據。通過分配對應於物理存儲器的虛擬地址,而不是實際為每個進程分配物理存儲器地址,可以使用容量遠大於實際物理存儲器容量的存儲器。它使它成為可能。此外,由於每個進程都分配了自己的虛擬地址,因此每個進程的內存空間是獨立的,並且不會違反其他進程的內存。
3.文件系統
它以文件的形式提供存儲數據的訪問方法。所有數據都以文件的形式進行管理。/ Directory(根目錄)作為頂點,內核本身作為文件和目錄的集合存在。
E. ELF文件格式是什麼
在計算機科學中,是一種用於二進制文件、可執行文件、目標代碼、共享庫和核心轉儲的標准文件格式。
是UNIX系統實驗室(USL)作為應用程序二進制介面(Application Binary Interface,ABI)而開發和發布的,也是Linux的主要可執行文件格式。
ELF文件由4部分組成,分別是ELF頭(ELF header)、程序頭表(Program header table)、節(Section)和節頭表(Section header table)。實際上,一個文件中不一定包含全部內容,而且他們的位置也未必如同所示這樣安排,只有ELF頭的位置是固定的,其餘各部分的位置、大小等信息有ELF頭中的各項值來決定。
F. 安卓11中*.so.toc是什麼文件
SO文件格式即ELF文件格式,它是Linux下可執行文件,共享庫文件和目標文件的統一格式。TOC這個詞其實是從出版界借用過來的,指的就是每一本書正文前面的「目錄」,它的作用地球人都知道:如果想快速找到書中某一內容,可以先查TOC,然後按照TOC指明的頁碼直接翻即可。
由於Android操作系統的底層基於Linux系統,所以SO文件可以運行在Android平台上。Android系統也同樣開放了C/C++介面供開發者開發Native程序。由於基於虛擬機的編程語言JAVA更容易被人反編譯,因此越來越多的應用將其中的核心代碼以C/C++為編程語言,並且以SO文件的形式供上層JAVA代碼調用,以保證安全性。
G. linux下的ELF可執行文件反匯編去掉驗證代碼
linux下可執行文件不是以後綴命名的,後綴只是讓操作人員自己知道這是什麼類型的文件,對本件本身沒有任何意義。
舉栗:
test.sh #是以shell寫的腳本
test.py #是以python寫的腳本
文件可執行是許可權問題:x許可權表示可執行
H. linux系統的可執行程序文件是什麼
linux系統的可執行文件是ELF格式的文件,起源於COFF文件格式,學習它可以知道系統內部運行原理。
I. Linux下可執行文件的默認擴展名為
一般沒有後綴,linux一般可以自動識別文件類型,有很多類型都不用加後綴
只要設了執行許可權,有elf
文件頭
,就可以看成可執行文件,要是純文本文件也可以看成是可執行的腳本
一部分下載的商業軟體安裝程序之類的可執行文件有.bin的後綴
J. 怎樣創建真正很小的Linux下的ELF可執行文件
實際上早在 08 年,筆者就深入研究了這個問題,只不過是在 Linux 平台上。當時優化到了 76 個位元組,可以列印 HelloWorld,格式是ELF可執行文件,幾乎把 C 編譯,鏈接,匯編,裝載,運行,二進制背後的很多細節吃了個透,希望跟大家一塊分享這樣...