elf檔案格式是乙個開放標準,各種unix系統的可執行檔案都採用elf格式,它有三種不同的型別:
elf格式提供了兩種不同的視角,鏈結器把elf檔案看成是section的集合,而載入器把elf檔案看成是segment的集合。
在linux os上,為了執行可執行檔案,他們是遵循elf格式的,通常gcc -o test test.c,生成的test檔案就是elf格式的,這樣就可以執行了,執行elf檔案,則核心會使用載入器來解析elf檔案並執行。
在embedded中,如果上電開始執行,沒有os系統,如果將elf格式的檔案燒寫進去,包含一些elf檔案的符號表字元表之類的section,執行碰到這些,就會導致失敗,如果用objcopy生成純粹的二進位制檔案,去除掉符號表之類的section,只將**段資料段保留下來,程式就可以一步一步執行。
elf檔案裡面包含了符號表等。bin檔案是將elf檔案中的**段,資料段,還有一些自定義的段抽取出來做成的乙個記憶體的映象。
並且elf檔案中**段資料段的位置並不是它實際的物理位置。他實際物理位置是在表中標記出來的。
ELF格式檔案
elf executable linkable format 格式是linux中的可執行檔案格式。在linux中,可執行檔案 目標檔案 動態鏈結庫 linux的.so 靜態鏈結庫 linux下的.a檔案 都是elf格式的檔案。elf檔案標準裡面把elf格式檔案分為了4類。可重定位檔案 relocat...
ELF檔案和BIN檔案
檔案的內容 1.bin檔案是 raw binary 檔案,這種檔案只包含機器碼。2.elf檔案除了機器碼外,還包含其它額外的資訊,如段的載入位址,執行位址,重定位表,符號表等。所以elf檔案的體積比對應的bin檔案要大。檔案的執行 1.執行raw binary很簡單,只需要將程式載入到其起始位址,就...
ELF檔案和BIN檔案
檔案的內容 1.bin檔案是 raw binary 檔案,這種檔案只包含機器碼。2.elf檔案除了機器碼外,還包含其它額外的資訊,如段的載入位址,執行位址,重定位表,符號表等。所以elf檔案的體積比對應的bin檔案要大。檔案的執行 1.執行raw binary很簡單,只需要將程式載入到其起始位址,就...