changeset 68:1f41643cfe8e

Move and update the cross compile stuff, note differences between pipe/file/tty, add a few quick notes about OLS papers to link to.
author Rob Landley <rob@landley.net>
date Wed, 10 Oct 2007 16:49:45 -0500
parents 992a411c98b6
children 0c10e3aad7d2
files master.idx
diffstat 1 files changed, 71 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/master.idx	Wed Oct 10 04:51:31 2007 -0500
+++ b/master.idx	Wed Oct 10 16:49:45 2007 -0500
@@ -82,6 +82,51 @@
       </span>
     </span>
     <span id="cross compiling">
+<span id="Cross compiling vs native compiling">
+<p>By default, Linux builds for the same architecture the host system is
+running.  This is called "native compiling".  An x86 system building an x86
+kernel, x86-64 building x86-64, or powerpc building powerpc are all examples
+of native compiling.</p>
+
+<p>Building different binaries than the host runs is called cross compiling.
+<a href=http://landley.net/writing/docs/cross-compiling.html>Cross
+compiling is hard</a>.  The build system for the Linux kernel supports cross
+compiling via a two step process: 1) Specify a different architecture (ARCH)
+during the configure, make, and install stages.  2) Supply a cross compiler
+(CROSS_COMPILE) which can output the correct kind of binary code.  An
+example cross compile command line (building the "arm" architecture) looks
+like:</p>
+
+<blockquote>
+<pre>make ARCH=arm menuconfig
+make ARCH=arm CROSS_COMPILE=armv5l-
+</pre>
+</blockquote>
+
+<p>To specify a different architecture than the host, either define the "ARCH"
+environment variable or else add "ARCH=xxx" to the make command line for each
+of the make config, make, and make install stages.  The acceptable values for
+ARCH are the names of the directories in the "arch" subdirectory of the Linux
+kernel source code, see <a href="#Architectures">Architectures</a> for
+details.  All stages of the build must use the same ARCH value, and building a
+second architecture in the same source directory requires "make distclean".
+(Just "make clean" isn't sufficient, things like the include/asm symlink need
+to be removed and recreated.)</p>
+
+<p>To specify a cross compiler prefix, define the CROSS_COMPILE environment
+variable (or add CROSS_COMPILE= to each make command line).  Native compiler
+tools, which output code aimed at the environment they're running in, usually
+have a simple name ("gcc", "ld", "strip").  Cross compilers usually add a
+prefix to the name of each tool, indicating the target they produce code for.
+To tell the Linux kernel build to use a cross compiler named "armv4l-gcc" (and
+corresponding "armv4l-ld" and "armv4l-strip") specify "CROSS_COMPILE=armv4l-".
+(Prefixes ending in a dash are common, and forgetting the trailing dash in
+CROSS_COMPILE is a common mistake.  Don't forget to add the cross compiler
+tools to your $PATH.)</p>
+</span>
+
+
+
       <span id="User Mode Linux">
       </span>
     </span>
@@ -332,9 +377,25 @@
     </span>
   </span>
   <span id="vfs">
+    <span id="Pipes, files, and ttys">
+<p>A pipe can be read from or written to, transmitting a sequence of bytes
+in order.</p>
+
+<p>A file can do what a pipe can, and adds the ability to seek to a location,
+query the current location, and query the length of the file (all of which are
+an integer number off bytes from the beginning of the file).</p>
+
+<p>A tty can do what a pipe can, and adds a speed (in bits per second)
+and cursor location (X and Y, with the upper left corner at 0,0).  Oh, and
+you can make it go beep.</p>
+
+<p>Note that you can't call lseek() on a tty and you can't call termios
+(man 3 termios) functions on a file.  Each can be treated as a pipe.</p>
+    </span>
     <span id="Filesystems">
       <span id="Types of filesystems (see /proc/filesystems)">
         <span id="Block backed">
+ols/2001/jffs2.pdf
         </span>
         <span id="Ram backed">
           <span id="ramfs">
@@ -430,6 +491,15 @@
   <span id="Input core">
   </span>
   <span id="Network">
+<pre>
+physical
+  plip
+  serial/slip/ppp
+  ethernet
+routing
+  ipv4
+  ipv6 ols/2001/mipl.pdf
+</pre>
   </span>
   <span id="Modules">
     <span id="Exported symbols">
@@ -468,39 +538,6 @@
 </span>
 
 <span id="Hardware">
-<span id="Cross compiling vs native compiling">
-<p>By default, Linux builds for the same architecture the host system is
-running.  This is called "native compiling".  An x86 system building an x86
-kernel, x86-64 building x86-64, or powerpc building powerpc are all examples
-of native compiling.</p>
-
-<p>Building different binaries than the host runs is called cross compiling.
-<a href=http://landley.net/writing/docs/cross-compiling.html>Cross
-compiling is hard</a>.  The build system for the Linux kernel supports cross
-compiling via a two step process: 1) Specify a different architecture (ARCH)
-during the configure, make, and install stages.  2) Supply a cross compiler
-(CROSS) which can output the correct kind of binary code.</p>
-
-<p>To specify a different architecture than the host, either define the "ARCH"
-environment variable or else add "ARCH=xxx" to the make command line for each
-of the make config, make, and make install stages.  The acceptable values for
-ARCH are the names of the directories in the "arch" subdirectory of the Linux
-kernel source code.  All stages of the build must use the same architecture.
-(Building a second architecture in the same source directory requires "make
-distclean"; just "make clean" isn't sufficient.)</p>
-
-<p>To specify a cross compiler prefix, define the CROSS environment variable
-(or add CROSS= to each make command line).  Native compiler tools, which output
-code aimed at the environment they're running in, usually have a simple name
-("gcc", "ld", "strip").  Cross compilers usually add a prefix to
-the name of each tool, indicating the target they produce code for.  To tell
-the Linux kernel build to use a cross compiler named "armv4l-gcc" (and
-corresponding "armv4l-ld" and "armv4l-strip") specify "CROSS=armv4l-".
-(Prefixes ending in a dash are common, and forgetting the trailing dash in
-CROSS is a common mistake.  Don't forget to add the cross compiler tools to
-your $PATH.)</p>
-</span>
-
   <span id="Architectures">
 <pre>
 alpha
@@ -517,7 +554,7 @@
 m68knommu
 mips
 parisc
-powerpc
+powerpc ols/2001/iseries.pdf
 ppc
 s390
 sh