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
- 178 LFX Mentorship
- 178 LFX Mentorship: Linux Kernel
- 772 Linux Foundation IT Professional Programs
- 382 Cloud Engineer IT Professional Program
- 175 Advanced Cloud Engineer IT Professional Program
- 75 DevOps IT Professional Program - Discontinued
- 7 DevOps & GitOps IT Professional Program
- 102 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- 8 AI & ML Training
- 1 Blockchain & Decentralized Identity Training
- 21 Cloud & Containers Training
- 2 Cybersecurity Training
- 2 DevOps & Site-Reliability Training
- 1 Linux Kernel Development Training
- 2 Networking Training
- 2 Open Source Best Practice Training
- 5 System Administration Training
- 1 System Engineering Training
- 3 Web & Application Development Training
- 797 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 96 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 91 Storage
- 771 Linux Distributions
- 81 Debian
- 68 Fedora
- 23 Linux Mint
- 13 Mageia
- 24 openSUSE
- 151 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 467 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 99 Linux Security
- 79 Network Management
- 101 System Management
- 46 Web Management
- 141 Mobile Computing
- 20 Android
- 106 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 402 Off Topic
- 125 Introductions
- 33 Study Material
- 1K Programming and Development
- 310 Kernel Development
- 710 Software Development
- 1K Software
- 416 Applications
- 182 Command Line
- 5 Compiling/Installing
- 71 Games
- 321 Installation
- Archived
- 183 Small Talk
- 2 LFD140 Class Forum
- 1.4K LFS258 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)