[5e40325] | 1 | <sect1 id="ch05-settingenviron">
|
---|
| 2 | <title>Setting up the environment</title>
|
---|
[66e4325] | 3 | <?dbhtml filename="settingenvironment.html" dir="chapter05"?>
|
---|
[5e40325] | 4 |
|
---|
| 5 | <para>While logged in as user <emphasis>lfs</emphasis>, issue the
|
---|
| 6 | following commands to set up a good work environment:</para>
|
---|
| 7 |
|
---|
[21ba4e3] | 8 | <screen><userinput>cat > ~/.bash_profile << "EOF"</userinput>
|
---|
[bc82645e] | 9 | set +h
|
---|
[5e40325] | 10 | umask 022
|
---|
| 11 | LFS=/mnt/lfs
|
---|
| 12 | LC_ALL=POSIX
|
---|
[148bb04] | 13 | PATH=/tools/bin:$PATH
|
---|
[148c207] | 14 | export LFS LC_ALL PATH
|
---|
[3aa9774] | 15 | unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
|
---|
[238527e] | 16 | <userinput>EOF
|
---|
[5e40325] | 17 |
|
---|
[21ba4e3] | 18 | source ~/.bash_profile</userinput></screen>
|
---|
[5e40325] | 19 |
|
---|
[66e4325] | 20 | <para>The <userinput>set +h</userinput> command turns off
|
---|
| 21 | <userinput>bash</userinput>'s hash function. Normally hashing is a useful
|
---|
| 22 | feature: <userinput>bash</userinput> uses a hash table to remember the
|
---|
| 23 | full pathnames of executable files to avoid searching the PATH time and time
|
---|
| 24 | again to find the same executable. However, we'd like the new tools to be
|
---|
| 25 | used as soon as they are installed. By switching off the hash function, our
|
---|
| 26 | "interactive" commands (<userinput>make</userinput>,
|
---|
| 27 | <userinput>patch</userinput>, <userinput>sed</userinput>,
|
---|
| 28 | <userinput>cp</userinput> and so forth) will always use
|
---|
| 29 | the newest available version during the build process.</para>
|
---|
| 30 |
|
---|
| 31 | <para>Setting the user file-creation mask to 022 ensures that newly created
|
---|
| 32 | files and directories are only writable for their owner, but readable and
|
---|
| 33 | executable for anyone.</para>
|
---|
| 34 |
|
---|
[e4b9338] | 35 | <para>The LFS variable should of course be set to the mount point you
|
---|
| 36 | chose.</para>
|
---|
[5e40325] | 37 |
|
---|
| 38 | <para>The LC_ALL variable controls the localization of certain programs,
|
---|
| 39 | making their messages follow the conventions of a specified country. If your
|
---|
[c84ddd9] | 40 | host system uses a version of Glibc older than 2.2.4,
|
---|
[66e4325] | 41 | having LC_ALL set to something other than "POSIX" or "C" during this chapter
|
---|
[5e40325] | 42 | may cause trouble if you exit the chroot environment and wish to return later.
|
---|
[66e4325] | 43 | By setting LC_ALL to "POSIX" (or "C", the two are equivalent) we ensure that
|
---|
[5e40325] | 44 | everything will work as expected in the chroot environment.</para>
|
---|
| 45 |
|
---|
[148bb04] | 46 | <para>We prepend <filename>/tools/bin</filename> to the standard PATH so
|
---|
[66e4325] | 47 | that, as we move along through this chapter, the tools we build will get used
|
---|
| 48 | during the rest of the building process.</para>
|
---|
[5e40325] | 49 |
|
---|
[3aa9774] | 50 | <para>The CC, CXX, CPP, LD_LIBRARY_PATH and LD_PRELOAD environment variables all
|
---|
| 51 | have the potential to cause havoc with our Chapter 5 toolchain. We therefore
|
---|
| 52 | unset them to prevent any chance of this happening.</para>
|
---|
| 53 |
|
---|
[66e4325] | 54 | <para>Now, after sourcing the just-created profile, we're all set to begin
|
---|
| 55 | building the temporary tools that will support us in later chapters.</para>
|
---|
[5e40325] | 56 |
|
---|
| 57 | </sect1>
|
---|
| 58 |
|
---|