]> Pileus Git - ~andy/sfvlug/blobdiff - cc/cc.tex
Update C Compiling presentation.
[~andy/sfvlug] / cc / cc.tex
index c0d47db1bb5d070f580fc55c5fbc6fc53325824d..278192655fe0b6f16235642307be3125bdec7d26 100644 (file)
--- a/cc/cc.tex
+++ b/cc/cc.tex
@@ -1,4 +1,4 @@
-\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 %
 %%%%%%%%%%%%%%%%
@@ -27,8 +35,8 @@
 %]{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
@@ -58,7 +66,7 @@
 }
 
 \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}