DJ Lucas wrote:
> On 06/01/2012 10:16 PM, Bruce Dubbs wrote:
>> Matt,
>>
>>     Trying a fresh build, perl 5.16.0 fails to configure.
>>
>> As user lfs:
>>
>> $ sh Configure -des -Dprefix=/tools
>>
>> Directories to use for library searches?
>> [/lib/../lib64 /usr/lib/../lib64 /lib /usr/lib /tools/lib]
>> ...
>>
>> What libraries to use?
>> [-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat]
>> ...
>>
>>    Checking your choice of C compiler and flags for coherency...
>> I've tried to compile and run the following simple program:
>>
>> #include<stdio.h>
>> int main() { printf("Ok\n"); return(0); }
>>
>> I used the command:
>>
>>           cc -o try -O2 -fno-strict-aliasing -pipe -fstack-protector
>> -fstack-protector try.c -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
>> -lgdbm_compat
>>            ./try
>>
>> and I got the following output:
>>
>> /mnt/lfs/tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../x86_64-unknown-linux-gnu/bin/ld:
>> cannot find -lgdbm
>> /mnt/lfs/tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../x86_64-unknown-linux-gnu/bin/ld:
>> cannot find -ldb
>> collect2: error: ld returned 1 exit status
>> ===========
>>
>> On my system, I have
>> /usr/lib/libdb.so
>> /usr/lib/libgdbm.so
>> /usr/lib/libgdbm_compat.so
>>
>> But we really don't want to use any of those because they won't be
>> available in chroot.  It is curious Configure finds them at first and
>> then the link command doesn't as the lfs user.
>>
>> ==========
>>
>> If I run Configure manually and leave off -lgdbm -ldb -lgdbm_compat, it
>> builds OK.
>>
>> ==========
>>
>> Finally, I found if I edit Configure (chmod 775 first), and add the line:
>>
>> libswanted=''
>>
>> to line 3577, then it works!
>>
>> chmod 0744 Configure
>> sed -i -e '/Restore computed paths/i libswanted=""' Configure
>>
>> sh Configure -des -Dprefix=/tools
>> make CLDFLAGS='-lm'
>>
>> and continue seems to work.
>>
>>     -- Bruce
>>
>> P.S.  This took WAY too long to figure out.

> While I am having other issues with perl ATM, maybe it would be better 
> to use the new compiler to determine the library search path instead of 
> the brute force method above (or the one in hints/linux.sh). 

> hints/linux.sh temporarily redefines gcc to /usr/bin/gcc (if it exists) 
> which is what is used to determine the library search path. 

> "sed 's@\$gcc@gcc' -i hints/linux.sh" may be sufficient, not sure if $gcc is 
> used elsewhere. 

What you found may be a slightly better way to get to the same point.
--------
chmod 0644 hints/linux.sh
sed -i -e 's|/usr/bin/gcc|/tools/bin/gcc|' hints/linux.sh

sh Configure -des -Dprefix=/tools
make
--------

seems to work.  We still need a chmod instruction and the sed is 
slightly different.  We do lose the need to specify CLDFLAGS.

It still searches for -lgdbm -ldb -lgdbm_compat, but the test compile 
doesn't fail.

Is this worth changing?

   -- Bruce
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to