Welcome to the Linux Foundation Forum!
ELF header
linuxdudex10
Posts: 38
what is the ELF header for an executable linux binary
0
Comments
-
Have you attempted to use "readelf -h {executable file}" to examine the elf headers for various files to compare the data in the headers?0
-
All an ELF header *really* does is explain to the kernel a little bit about what the file is and what it does, and what it's for. That is to say, is it an executable, or a library? Is it for my architecture, or other architecture? Assuming it's an executable for my architecture, how much memory should I reserve for this thing? What other bits of data should I load into memory? Does it require my to load any other libraries?
Pretty much all operating systems today require some kind of header like this on executables. Windows uses one called PE. The most recent example I can think of where this was not the case was the old .com executable format for DOS where the code in a .com file was meant to be run on bare metal (e.g. no memory management from the OS, and little or no functionality from the OS other than the interupts it may have overwritten in memory). The requirement for access to more and more memory, and the need for multitasking and interaction with services provided by an OS had lead to these executable headers.
ELF happens to be a very portable / popular standard. It's an Open format available to any OS / Platform, and specifically provides a way to embed information about the intended platform of the code that is universally readable. A lot of OSs and platforms today use ELF or some variation of ELF.
Wikipedia has a decent enough article about ELF.
Also, you can read the man pages for readelf, objdump, file, and magic for a little more information.
Basically, the ELF header is built by the linker when you are building software (man ld)0
Categories
- All Categories
- 175 LFX Mentorship
- 175 LFX Mentorship: Linux Kernel
- 745 Linux Foundation IT Professional Programs
- 372 Cloud Engineer IT Professional Program
- 168 Advanced Cloud Engineer IT Professional Program
- 73 DevOps IT Professional Program - Discontinued
- 3 DevOps & GitOps IT Professional Program
- 98 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- AI & ML Training
- Blockchain & Decentralized Identity Training
- 1 Cloud & Containers Training
- Cybersecurity Training
- DevOps & Site-Reliability Training
- Linux Kernel Development Training
- Networking Training
- Open Source Best Practice Training
- System Administration Training
- System Engineering Training
- Web & Application Development Training
- 2 LFD103-JP クラス フォーラム
- 4 LFD210-CN Class Forum
- 764 LFD259 Class Forum
- 681 LFS101 Class Forum
- 2 LFS158-JP クラス フォーラム
- 162 LFS207 Class Forum
- 3 LFS207-DE-Klassenforum
- 4 LFS207-JP クラス フォーラム
- 61 LFS241 Class Forum
- 52 LFS242 Class Forum
- 42 LFS243 Class Forum
- 19 LFS244 Class Forum
- 4 LFS250-JP クラス フォーラム
- 166 LFS253 Class Forum
- 1.4K LFS258 Class Forum
- 792 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 95 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 87 Storage
- 768 Linux Distributions
- 81 Debian
- 67 Fedora
- 22 Linux Mint
- 13 Mageia
- 24 openSUSE
- 150 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 465 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 98 Linux Security
- 78 Network Management
- 101 System Management
- 46 Web Management
- 106 Mobile Computing
- 18 Android
- 73 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 392 Off Topic
- 121 Introductions
- 181 Small Talk
- 29 Study Material
- 946 Programming and Development
- 310 Kernel Development
- 618 Software Development
- 978 Software
- 370 Applications
- 182 Command Line
- 5 Compiling/Installing
- 68 Games
- 317 Installation
- Archived
- 2 LFD140 Class Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)