Mercurial > hg > kdocs
diff master.idx @ 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 |
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