<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2650.12">
<TITLE>RE: Problem using newly compiled static binutils for any packages mak ing use of regular expressions</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Yes, I checked.  If I take the new ld out of the path, it works.  I specifically logged OUT of the shell after installing binutils, then logged back in and modified the path before moving on to the next package.  I didn't know about hash -r...  I will make use of that from now on, instead, thanks!</FONT></P>

<P><FONT SIZE=2>But what I didn't realize is that my glibc is old...too old.  I will try installing and making use of the new glibc as early in the install process as possible and see if that solves the problem.  I will let you know.</FONT></P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Gerard Beekmans [<A HREF="mailto:gerard@linuxfromscratch.org">mailto:gerard@linuxfromscratch.org</A>]</FONT>
<BR><FONT SIZE=2>Sent: Tuesday, September 05, 2000 10:17 AM</FONT>
<BR><FONT SIZE=2>To: lfs-discuss@linuxfromscratch.org</FONT>
<BR><FONT SIZE=2>Subject: Re: Problem using newly compiled static binutils for any</FONT>
<BR><FONT SIZE=2>packages mak ing use of regular expressions</FONT>
</P>
<BR>

<P><FONT SIZE=2>> NOTES:</FONT>
<BR><FONT SIZE=2>>   1) binutils have been compiled statically, and installed to</FONT>
<BR><FONT SIZE=2>> $LFS/usr/local/temp</FONT>
<BR><FONT SIZE=2>>   2) /usr/local/temp is sym-linked to point to $LFS/usr/local/temp</FONT>
<BR><FONT SIZE=2>>   3) the path has been modified so that /usr/local/temp/bin is first</FONT>
<BR><FONT SIZE=2>>   4) THEREFORE: When using "ld," it is using the version in</FONT>
<BR><FONT SIZE=2>> $LFS/usr/local/temp/bin, not /bin</FONT>
</P>

<P><FONT SIZE=2>You are sure of that. Have you taken bash' hash function into account? If you </FONT>
<BR><FONT SIZE=2>have executed 'ld' at least once in that particular shell before you updated </FONT>
<BR><FONT SIZE=2>the path, bash will still use ld in the first found path. To make bash forget </FONT>
<BR><FONT SIZE=2>about this hash database run: hash -r</FONT>
</P>

<P><FONT SIZE=2>To find out if a command is hash'ed or not execute:</FONT>
<BR>        <FONT SIZE=2>type ld</FONT>
<BR><FONT SIZE=2>If it's not hashed (when this shell executes ld for the first time):</FONT>
<BR>        <FONT SIZE=2>ld is /usr/bin/ld</FONT>
<BR><FONT SIZE=2>If it is:</FONT>
<BR>        <FONT SIZE=2>ld is hashed (/usr/bin/ld)</FONT>
</P>

<P><FONT SIZE=2>Just something you might want to look into. It can cause nasty problems if </FONT>
<BR><FONT SIZE=2>you're not expecting it.</FONT>
</P>

<P><FONT SIZE=2>Ok I'm a bit confused here so let me try to recap a few things:</FONT>
</P>

<P><FONT SIZE=2>1) you have installed binutils statically in $LFS/usr/local/temp</FONT>
<BR><FONT SIZE=2>2) on your normal system (so outside chroot) you have modified your path to </FONT>
<BR><FONT SIZE=2>have $LFS/usr/local/temp/bin appear as the first directory, thus you use </FONT>
<BR><FONT SIZE=2>binutils-2.10 on your normal system (outside chroot)</FONT>
<BR><FONT SIZE=2>3) you are compiling fileutils statically using the 2.10 version on binutils</FONT>
<BR><FONT SIZE=2>4) because you're linking statically and outside chroot, fileutils are linked </FONT>
<BR><FONT SIZE=2>against libc5</FONT>
</P>

<P><FONT SIZE=2>It's not a matter of configure&&make&&make install on the static versions when </FONT>
<BR><FONT SIZE=2>your base system uses libc5 (the book makes a reference that libc5 isn't </FONT>
<BR><FONT SIZE=2>supported, but it's not impossible though).</FONT>
</P>

<P><FONT SIZE=2>I know Paul Jensen has installed an LFS-1.3 system a long time ago where the </FONT>
<BR><FONT SIZE=2>normal system used libc5. He had some problems but he got it running </FONT>
<BR><FONT SIZE=2>(linuxfromscratch.org was hosted on that system if I'm not mistaken). But </FONT>
<BR><FONT SIZE=2>Paul's not on this mailinglist anymore and pcrdallas.com is down so I don't </FONT>
<BR><FONT SIZE=2>even know if he wrote an lfs-hint for this (I'm still waiting for Simon to get </FONT>
<BR><FONT SIZE=2>back to me on the lfs-hints matter). You could try to email him personally and </FONT>
<BR><FONT SIZE=2>see if he can give some help. </FONT>
</P>

<P><FONT SIZE=2>Though firstly you might want to try this:</FONT>
<BR><FONT SIZE=2>All your errors (or at least most of them) relate to some multiple definition </FONT>
<BR><FONT SIZE=2>of something. This is a known problem on some packages when linked statically </FONT>
<BR><FONT SIZE=2>against some glibc version (in fact, the regex code on gnu utils is almost </FONT>
<BR><FONT SIZE=2>always directly copied from the glibc source which results in variable </FONT>
<BR><FONT SIZE=2>colissiosn when linked statically - there are two variables with the same name </FONT>
<BR><FONT SIZE=2>in the same name space - that's illegal).</FONT>
</P>

<P><FONT SIZE=2>So what you can try is rename all those instances of re_search_2, </FONT>
<BR><FONT SIZE=2>re_set_registers, re_compile and all the others in something else, like </FONT>
<BR><FONT SIZE=2>re_search_2-2 and re_set_registers-2 and re_compile-2 and so forth.</FONT>
</P>

<P><FONT SIZE=2>This can be done with a simple script that uses sed:</FONT>
<BR><FONT SIZE=2>#!/bin/sh</FONT>
<BR><FONT SIZE=2>#begin</FONT>
</P>

<P><FONT SIZE=2>for i in re_search_2 re_set_registers re_compile</FONT>
<BR><FONT SIZE=2>do</FONT>
<BR>        <FONT SIZE=2>sed s/$i/$i-2/ regex.c >out</FONT>
<BR>        <FONT SIZE=2>mv out regex.c</FONT>
<BR>        <FONT SIZE=2>sed s/$i/$i-2/ regex.h >out</FONT>
<BR>        <FONT SIZE=2>mv out regex.h</FONT>
<BR><FONT SIZE=2>done</FONT>
<BR><FONT SIZE=2>#end</FONT>
</P>

<P><FONT SIZE=2>Of course, add all the variable names to the 'i' variable in that script. Save </FONT>
<BR><FONT SIZE=2>it, chmod 755 it, execute it and try to compile. You probably have to change </FONT>
<BR><FONT SIZE=2>variables in others places as well but follow the same strategy. I hope that </FONT>
<BR><FONT SIZE=2>this works for you.</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>-- </FONT>
<BR><FONT SIZE=2>Gerard Beekmans</FONT>
<BR><FONT SIZE=2>www.linuxfromscratch.org</FONT>
</P>

<P><FONT SIZE=2>-*- If Linux doesn't have the solution, you have the wrong problem -*-</FONT>
</P>

</BODY>
</HTML>