OSDN Git Service

mkostemp: fix implementation
[uclinux-h8/uClibc.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index fd882fc..78fe3fc 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,64 +1,80 @@
+SOFTWARE REQUIREMENTS
 
-* Configuration:
+   Compiling uClibc requires Linux kernel header files.  uClibc will
+   be compiled to match the interfaces available in the provided
+   version of the Linux kernel headers.  Linux kernel version 2.0,
+   version 2.2, version 2.4 and version 2.6 are known to work.  Other
+   kernel versions may work but haven't been tested.  Its also helpful
+   to have a working version of GNU binutils, and GNU gcc -- using
+   excessively old versions of these packages can cause very strange
+   errors that are difficult to find and fix.
 
-  ln -s ./extra/Configs/Config.<arch> ./Config
 
-Then edit ./Config for your setup.  In particular, modify CROSS and
-KERNEL_SOURCE as necessary.  You may also want to modify
-SHARED_LIB_LOADER_PATH, DEVEL_PREFIX, and SYSTEM_DEVEL_PREFIX depending
-on where you want to install the development environment.  By default,
-the development environment is installed into /usr/<arch>-linux-uclibc/.
+CONFIGURING uClibc:
 
+ - Users must have a valid configuration file to compile uClibc.  Do not
+    skip this step.  New configuration options are added in each
+    release, and odd configuration options are sometimes removed.
+    To configure uClibc, you can run:
 
-* Building:
+            make menuconfig
+    or
+            make config
 
-  make
+    If you have an existing .config file, you can update this file
+    using the
 
+            make oldconfig
 
-* Installing the development environment:
+    command, which will only ask you about new configuration options.
 
-(As root, if necessary,)
+    Available configuration commands are:
+        "make config"       Text based configuration, no menus or colors.
+        "make menuconfig"   Text based color menus, radiolists & dialogs.
+        "make oldconfig"    Default all questions based on the contents of
+                            your existing ./.config file.
+        "make defconfig"    Use defaults for all options.
+        "make randconfig"   Use random values for all options.
+        "make allyesconfig" Set all values to "yes" for all options.
+        "make allnoconfig"  Set all values to "no" for all options.
 
-  make install
 
-This will install the header files, libraries, and the gcc
-wrapper into the directories defined in Config.
+COMPILING uClibc:
 
+ - uClibc does not have proper dependancy checking (yet) so if you
+    change your uClibc configuration, you must current rebuild the
+    entire library, by first running 
 
-* Installing the target runtime environment:
+            make clean
 
-(As root, if necessary,)
+ - Once you have a valid configuration file, just run
 
-   make PREFIX=<temporary path> install_target
+            make
 
-This installs only the files that are necessary to run binaries
-compiled against uClibc.  Hint: You probably do not want to install
-the target runtime environment on your host machine.
+    to compile uClibc.  or if you are cross compiling, you would
+    instead run something like:
 
+            make CROSS_COMPILE=arm-linux-
 
-* Using uClibc:
 
-To compile programs with uClibc,
+INSTALLING the uClibc development environment:
 
-   export PATH={uClibc DEVEL_PREFIX}/bin:$PATH
+ - As root, if necessary, run something like:
 
-and then just ./configure and make as usual.
+        make PREFIX=<some path> install
 
-Note: 
+    This will install the uClibc runtime and development system (i.e.
+    all the header files, libraries, etc) into the directories defined
+    within your .config file.
 
-       You may also want to look at extra/gcc-uclibc/gcc-uclibc.c for
-       additional information concerning what options and environment
-       variables the gcc wrapper handles.
 
-Note2: 
+USING uClibc:
 
-       There is an unwholesomely huge amount of code out there that
-       depends on the presence of GNU libc header files.  We have GNU
-       libc header files.  So we have committed a horrible sin in
-       uClibc.  We _lie_ and claim to be GNU libc in order to force
-       many applications to work as their developers intended.  This
-       is IMHO, pardonable, since these defines are not really
-       intended to check for the presence of a particular library, but
-       rather are used to define an _interface_.  Some programs (such
-       as GNU binutils) are especially chummy with glibc, and need
-       this behavior disabled by adding CFLAGS+=-D__FORCE_NOGLIBC
+ - To compile programs with uClibc you will need a complete toolchain
+    (i.e. binutils, gcc, and uClibc) that was built expressly for use
+    with uClibc.
+
+ - Native and cross compiling toolchains, as well as makefiles for creating
+    uClibc toolchains, are available from the uClibc website.  You may want 
+    to check out "buildroot", which is available from the uClibc download area,
+    which provides examples of how to build your own uClibc based system.