--- /dev/null
+\documentclass[13pt]{beamer}
+
+%%%%%%%%%%%%%%%%%%%
+% Commands/macros %
+%%%%%%%%%%%%%%%%%%%
+\newcommand{\link}[1]{
+ \begin{flushright}
+ \scriptsize{#1}
+ \end{flushright}
+}
+
+\newcommand{\header}[1]{
+ \hspace{-1em}\textit{#1:}
+}
+
+\newcommand{\sheader}[1]{
+ \vspace{1.5em}
+ \header{#1}
+}
+
+%%%%%%%%%%%%%%%%
+% Header/theme %
+%%%%%%%%%%%%%%%%
+%\usetheme[
+% pageofpages=of,
+% alternativetitlepage=true,
+%]{Torino}
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{footline}{}
+\setbeamersize{text margin left=20mm}
+\setbeamersize{text margin right=10mm}
+\setbeamerfont{frametitle}{size={\fontsize{15}{16}}}
+
+% Import packages
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage{times}
+\usepackage[T1]{fontenc}
+\usepackage{graphics}
+\usepackage{hyperref}
+\usepackage{ulem}
+\usepackage{listings}
+
+%%%%%%%%%%%%%%%%%%%%
+% Title page setup %
+%%%%%%%%%%%%%%%%%%%%
+\subject{%
+ c,
+ compile,
+ unix,
+}
+
+\keywords{%
+ c,
+ cc
+ make,
+ autotools,
+}
+
+\title[C Compiling]{%
+ C Comipling and More!
+}
+
+\author[Spencer]{%
+ Andy Spencer
+}
+
+\date[2018-12-15]{%
+ December 15, 2018 \\
+ \small{San Fernando Valley Linux Users Group}
+}
+
+%%%%%%%%%%%%%%%%%
+% Content pages %
+%%%%%%%%%%%%%%%%%
+
+\begin{document}
+
+%%%%%%%%%%%%%%%%
+% Introduction %
+%%%%%%%%%%%%%%%%
+
+\begin{frame}[plain]
+ \titlepage
+\end{frame}
+
+%%%%%%%%%%
+% Why C? %
+%%%%%%%%%%
+
+\section{Why C?}
+
+\begin{frame}
+ Why C
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%
+% Compiled software %
+%%%%%%%%%%%%%%%%%%%%%
+% - compilers vs interpreters
+% - C compile steps (cpp, cc, as, ld)
+% - executable formats (ELF)
+% - dynamic and static linking
+
+\section{Compiled software}
+
+\begin{frame}{Compilers vs Interpreters}
+ \structure{Interpreters}
+ \begin{itemize}
+ \item Bash, Python, Ruby
+ \item Interpreter runs and follows the instructions
+ \item The interpreter is generally compiled
+ \item Advantages: advanced languages, lot of features, easy development
+ \end{itemize}
+
+ \structure{Compilers}
+ \begin{itemize}
+ \item C/C++, Fortran, Haskell, Rust, (GCC / LLVM)
+ \item Translates one language to another
+ \item Often self compiling (needs bootstrapping)
+ \item Advantages: fast, deterministic, more static analysis
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{C compiling steps}
+ \begin{itemize}
+ \item[cpp] C Pre-Processor
+ \begin{itemize}
+ \item Text based macros (\#include, \#define)
+ \end{itemize}
+
+ \item[cc] C Compiler
+ \begin{itemize}
+ \item Translates C to Assembly
+ \item Register allocation
+ \item Memory layout (structs/unions)
+ \item Function calling conventions
+ \end{itemize}
+
+ \item[as] Assembler
+ \begin{itemize}
+ \item Translates Assembly to object code
+ \item Handles labels, addresses, and mnemonics
+ \end{itemize}
+
+ \item[ld] Linker
+ \begin{itemize}
+ \item Combines object files
+ \item Resolves symbols and relocations
+ \end{itemize}
+
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Executable formats}
+ \begin{itemize}
+ \item[ELF] Executable and linking formats (Linux)
+ \item[COFF] Common Object File Format (Unix)
+ \item[PE] Portable Executable (Windows, EFI)
+ \item[Mach-O] Mach Object (Mac OSX)
+ \end{itemize}
+
+ \textit{There are also DWARFs... \\
+ "Debugging With Attributed Record Formats"}
+\end{frame}
+
+\begin{frame}{Dynamic vs static}
+ \begin{itemize}
+ \item Static linking
+ \item Dynamic linking
+ \item Modules
+ \item System calls
+ \begin{itemize}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%
+% Build systems %
+%%%%%%%%%%%%%%%%%
+
+\section{Build systems}
+
+\begin{frame}{C is for CC}
+ \begin{itemize}
+ \item C is for CC
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Scripts}
+ \begin{itemize}
+ \item Scripts
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Make}
+ \begin{itemize}
+ \item Make
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{autotools}
+ \begin{itemize}
+ \item autotools
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{kconfig}
+ \begin{itemize}
+ \item kconfig
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{others}
+ \begin{itemize}
+ \item others
+ \end{itemize}
+\end{frame}
+
+\end{document}