Introduction into Linux development.

This file is not a proper HOWTO, it just has some notes about learning programming from scratch.

This is even less of a HOWTO, because rather than teaching stuff, it is mostly just guiding the reader over the existing islands of knowledge.

This HOWTO is written with the following goals in mind:

  1. Let the reader as quickly as possible be able to start developing for Android.
  2. PROFIT

1. TODO Body

1.1. Overview

Linux is a kernel, and it runs binary files.

Its binary files are mostly ELF files, “executable-linkable format” files. The spec for ELF files is available from the Linux Foundation website https://refspecs.linuxfoundation.org/elf/elf.pdf#page=9.39 .

The description is easier than it seems.

But if you get lost, there are more human-readable HOWTOs:

  1. Learning Linux Binary Analysis by Ryan “elfmaster” O’Neill, Chapter 2
  2. https://blog.k3170makan.com/2018/09/introduction-to-elf-format-elf-header.html
  3. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
  4. https://thinkingeek.com/categories/aarch64/

ELF files are characterised by a header and a footer, and the amazing thing is, you can parse the header by just doing a read() into a Elf64_Ehdr* pointer.

I kid you not.