[lfs-support] lfs tool chain technique LFS-7.1

Jasmine Iwanek jasmine at iwanek.co.uk
Sat Aug 25 18:26:42 PDT 2012

On 2012-08-25 16:10, Eleanore Boyd wrote:
> On 8/25/2012 10:02 AM, Hadi wrote:
>> Hi Emerson,
>> Thank your feedback, Emerson.
>> I think I should correct you first. After binutils-2.22-Pass1 in 
>> Chapter 5 LFS 7.1, binutils are NOT picked up from the /tools 
>> directory:
>> PATH= PATH=/tools/bin:/bin:/usr/bin
>> In /tools/bin, there is only $LFS_TGT-* tools as following in my X86 
>> virtual box:
>> lfs:/mnt/lfs$ ls tools/bin/
>> i686-lfs-linux-gnu-addr2line i686-lfs-linux-gnu-elfedit 
>> i686-lfs-linux-gnu-ld i686-lfs-linux-gnu-ranlib
>> i686-lfs-linux-gnu-ar i686-lfs-linux-gnu-gcc 
>> i686-lfs-linux-gnu-ld.bfd i686-lfs-linux-gnu-readelf
>> i686-lfs-linux-gnu-as i686-lfs-linux-gnu-gcc-4.6.2 
>> i686-lfs-linux-gnu-nm i686-lfs-linux-gnu-size
>> i686-lfs-linux-gnu-c++filt i686-lfs-linux-gnu-gcov 
>> i686-lfs-linux-gnu-objcopy i686-lfs-linux-gnu-strings
>> i686-lfs-linux-gnu-cpp i686-lfs-linux-gnu-gprof 
>> i686-lfs-linux-gnu-objdump i686-lfs-linux-gnu-strip
>> Or we can use command "which is ld", it shows that ld is the host's:
>> lfs:/mnt/lfs$ which is ld
>> which: no is in (/tools/bin:/bin:/usr/bin)
>> /usr/bin/ld
>> Although in /tools/i686-lfs-linux-gnu/ there is binutils (ar/ld), 
>> but /tools/i686-lfs-linux-gnu is not in the PATH.
>> So it is not easy to understand "Binutils is installed first because 
>> the configure runs of both GCC and Glibc perform various feature tests 
>> on the assembler and linker to determine which software features to 
>> enable or disable." and the tool chain constructing process.
>> Hadi
>  If /tools is in the path, then all subdirectories are also in the
> path. Binutils primarily contains the assembler and linker needed by
> GCC to build assembler portions of any code.
>  Elly

Not quite true elly, configure has some code to search in certain 
relative paths from the prefix, if you take a look at the build logs 
you'll find lots of references like:

checking for ld...  

(That one is from gcc pass 2 in 7.2 dev chapter 5)

If you want to test the theory, make a subdirectory under /usr/bin like 

bash-4.2# mkdir /usr/bin/temp
bash-4.2# echo "echo \"Well, that shouldn't have run.\"" > 
bash-4.2# chmod 755 /usr/bin/temp/sillyprog
bash-4.2# sillyprog
bash: sillyprog: command not found

you'll notice it's not found as it's not in the path:
bash-4.2# export
declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin"

If subdirectories were automatically included in the path, that would 
make for a bit of a security problem.

Jasmine Iwanek

More information about the lfs-support mailing list