1 \documentclass[13pt]{beamer}
12 \newcommand{\header}[1]{
13 \hspace{-1em}\textit{#1:}
16 \newcommand{\sheader}[1]{
26 % alternativetitlepage=true,
28 \setbeamertemplate{navigation symbols}{}
29 \setbeamertemplate{footline}{}
30 \setbeamersize{text margin left=20mm}
31 \setbeamersize{text margin right=10mm}
32 \setbeamerfont{frametitle}{size={\fontsize{15}{16}}}
35 \usepackage[english]{babel}
36 \usepackage[latin1]{inputenc}
38 \usepackage[T1]{fontenc}
70 \small{San Fernando Valley Linux Users Group}
100 % - compilers vs interpreters
101 % - C compile steps (cpp, cc, as, ld)
102 % - executable formats (ELF)
103 % - dynamic and static linking
105 \section{Compiled software}
107 \begin{frame}{Compilers vs Interpreters}
108 \structure{Interpreters}
110 \item Bash, Python, Ruby
111 \item Interpreter runs and follows the instructions
112 \item The interpreter is generally compiled
113 \item Advantages: advanced languages, lot of features, easy development
116 \structure{Compilers}
118 \item C/C++, Fortran, Haskell, Rust, (GCC / LLVM)
119 \item Translates one language to another
120 \item Often self compiling (needs bootstrapping)
121 \item Advantages: fast, deterministic, more static analysis
125 \begin{frame}{C compiling steps}
127 \item[cpp] C Pre-Processor
129 \item Text based macros (\#include, \#define)
134 \item Translates C to Assembly
135 \item Register allocation
136 \item Memory layout (structs/unions)
137 \item Function calling conventions
142 \item Translates Assembly to object code
143 \item Handles labels, addresses, and mnemonics
148 \item Combines object files
149 \item Resolves symbols and relocations
155 \begin{frame}{Executable formats}
157 \item[ELF] Executable and linking formats (Linux)
158 \item[COFF] Common Object File Format (Unix)
159 \item[PE] Portable Executable (Windows, EFI)
160 \item[Mach-O] Mach Object (Mac OSX)
163 \textit{There are also DWARFs... \\
164 "Debugging With Attributed Record Formats"}
167 \begin{frame}{Dynamic vs static}
170 \item Dynamic linking
180 \section{Build systems}
182 \begin{frame}{C is for CC}
188 \begin{frame}{Scripts}
200 \begin{frame}{autotools}
206 \begin{frame}{kconfig}
212 \begin{frame}{others}