[lfs-dev] gcc fails to build

John Frankish john.frankish at outlook.com
Fri Nov 9 04:02:10 PST 2018

>>>>> Ref:
>>>>> Linux From Scratch - Version SVN-20181029 Chapter 5. Constructing a 
>>>>> Temporary System 5.5. GCC-8.2.0 - Pass 1
>>>>> Using the latest script to update the dynamic linker results in gcc failing to build.
>>>>> Using a previous script fixes the problem.
>>>>> Details below.
>>>>> This script:
>>>>> for file in gcc/config/{linux,i386/linux{,64}}.h
>>>>> do
>>>>>   cp -uv $file{,.orig}
>>>>>   sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
>>>>>       -e 's@/usr@/tools at g' $file.orig > $file
>>>>>   echo '
>>>>> #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
>>>>> #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
>>>>>     touch $file.orig
>>>>> done
>>>> This script has been in the book for a couple of years. It is hard 
>>>> to believe that nobody else has seen a failure if it is wrong.
>>>> Maybe your system is not recognized as either i386 or x86_64, or not as linux?
>>>> Are you building on a Mac, Unix derivate or raspberry pi? What is 
>>>> the response of the " arch" command?
>>> I'm building on a linux machine recognised as x86_64 and I tried 
>>> three separate times...
>> Could it be a copy/paste artifact, such as a space after '\' at the 
>> end of a line?
>>GNU_TARGET_OS_etc is defined in gcc/config/linux.h, and shouldn't be 
>> modified by the said script; unless possibly if there is a typo.
>> Sorry if I sound like the error comes from your side (script, our 
>> unusual system, I rule out LFS and LFS_TGT variable settings, since it 
>> seems to work with the old script), but really, after 2 years, 
>> somebody should have spotted the same error as you.
> I don't think that the new script has been in use as much as two years, 
> since I last built using the LFS instructions a year ago with the old script.
> This being said, yes, you would have thought that somebody else
> would have noticed it.
> It could be a copy paste error, but I tried three times with the new
> script and it worked first time when copy pasting the old script...
As an aside, what is the first line of the current script meant to expand to?

$ for file in gcc/config/{linux,i386/linux{,64}}.h


..gcc/config/linux is not present in the gcc-8.2.0 source

Has coreutils always been able to deal with double {{}} or is a new(er) version required?

More information about the lfs-dev mailing list