-\documentclass[13pt]{beamer}
+\documentclass[13pt,aspectratio=169]{beamer}
%%%%%%%%%%%%%%%%%%%
% Commands/macros %
\header{#1}
}
+\newcommand{\screen}[1]{
+ \setlength{\leftmargin}{0pt}
+ \setlength{\rightmargin}{0pt}
+ \begin{center}
+ \includegraphics[height=3.0in,width=4.25in,keepaspectratio]{#1}
+ \end{center}
+}
+
%%%%%%%%%%%%%%%%
% Header/theme %
%%%%%%%%%%%%%%%%
%]{Torino}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
-\setbeamersize{text margin left=20mm}
-\setbeamersize{text margin right=10mm}
+\setbeamersize{text margin left=20mm}
+\setbeamersize{text margin right=10mm}
\setbeamerfont{frametitle}{size={\fontsize{15}{16}}}
% Import packages
}
\title[C Compiling]{%
- C Comipling and More!
+ C Compiling and More!
}
\author[Spencer]{%
"Debugging With Attributed Record Formats"}
\end{frame}
+\begin{frame}{Executable formats}
+ \screen{elf.pdf}
+\end{frame}
+
\begin{frame}{Dynamic vs static}
\begin{itemize}
\item Static linking
\item Dynamic linking
\item Modules
\item System calls
- \begin{itemize}
+ \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%
\section{Build systems}
\begin{frame}{C is for CC}
+ \structure{Running CC manually}
\begin{itemize}
- \item C is for CC
+ \item Compiling manually...
+ \item Works for very small program.
+ \item cc hello.c
+ \item gcc -Wall -o hello hello.c
\end{itemize}
-\end{frame}
-\begin{frame}{Scripts}
+ \structure{Scripting}
\begin{itemize}
- \item Scripts
+ \item Why not just write a script for this?
+ \item Dependency tracking, parallel execution.
\end{itemize}
\end{frame}
\begin{frame}{Make}
\begin{itemize}
- \item Make
+ \item Generic dependency tracker.
+ \item Except GNU Make, which has tons of dumb rules.
+ \item Configured with -DOPTION or config.mk
\end{itemize}
\end{frame}
\begin{frame}{autotools}
+ \structure{Overview}
+ \begin{itemize}
+ \item Designed to be "portable".
+ \item Good support for configuration.
+ \item Handles all the weird corner cases.
+ \item Nobody likes it but everybody uses it.
+ \end{itemize}
+ \structure{Usage}
\begin{itemize}
- \item autotools
+ \item {[./autogen.sh]}
+ \item ./configure --help
+ \item make
+ \item make install
\end{itemize}
\end{frame}
\begin{frame}{kconfig}
\begin{itemize}
- \item kconfig
+ \item Started out in the Linux kernel.
+ \item Even better support for configuration.
+ \item Provides nice menu interfaces.
\end{itemize}
\end{frame}
\begin{frame}{others}
\begin{itemize}
- \item others
+ \item cmake
+ \item scons
+ \item bazel
+ \item ant
+ \item maven
+ \item gradle
\end{itemize}
\end{frame}