[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gcc can't compile, egcc can!??



On Sun, 14 Jun 1998 11:39:30 -0500 (CDT), servis@purdue.edu wrote:
>On 14 Jun, Zack Weinberg wrote:
>> 
>> It looks to me as if the gcc drivers aren't doing anything wrong.  But
>> this is a big fat clue:
>> 
>>>ld: warning: libm.so.6, needed by /usr/lib/libstdc++.so, may conflict with l
>ib
>>>m.so.5
>>>ld: warning: libc.so.6, needed by /lib/libm.so.6, may conflict with libc.so.
>5
>> 
>> The linker called by gcc/g++ 2.7 is attempting to link your program
>> with the crt1.o from libc6 but the dynamic library from libc5.  That
>> implies you have strange environment variable settings or mangled
>> linker config files.  egcc has a wrapper for ld which is smart enough
>> to straighten this out.
>> 
>
>% cat /etc/ld.so.conf

ld.so.conf is unrelated.

>% ld --verbose
>GNU ld version 2.9.1 (with BFD 2.9.1)
>  Supported emulations:
>   elf_i386
>   i386linux
>using internal linker script:
>==================================================
>OUTPUT_FORMAT("elf32-i386", "elf32-i386",
>              "elf32-i386")
>OUTPUT_ARCH(i386)
>ENTRY(_start)
>SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR
>(/
>usr/i486-linux/lib);
>
>Hmmm.  I don't even have a /usr/i486-linux/lib directory!!

It's a hook for if you want to do cross compilation.  Don't worry
about it.

I bet you have spurious library symlinks in /lib or /usr/lib.  For a
normal library, like libm, the only files that should exist are

/usr/lib/libm.so -> /usr/lib/libm.so.6
/usr/lib/libm.so.6 -> /usr/lib/libm-2.0.7.so
/usr/lib/libm-2.0.7.so
/usr/lib/libm.a

The C library is a little weird, because the real thing lives in /lib
and libc.so is a file.  That should be set up like this:

/usr/lib/libc.so
/lib/libc.so.6 -> /lib/libc-2.0.7.so
/lib/libc-2.0.7.so
/usr/lib/libc.a 

Alongside this will be the files for libc5, which will be like this:

/lib/libc.so.5 -> /usr/lib/libc.so.5.4.44
/usr/lib/libm.so.5 -> /usr/lib/libm.so.5.4.44
/usr/lib/libc.so.5.4.44
/usr/lib/libm.so.5.4.44
/usr/lib/libc5-compat/libc.so -> /lib/libc.so.5
/usr/lib/libc5-compat/libm.so -> /usr/lib/libm.so.5
/usr/lib/libc5-compat/libc.a
/usr/lib/libc5-compat/libm.a

(The shared libraries -- libc.so.5.4.44 -- may also be in
libc5-compat; I don't have a debian 2.0 system here to check on.)

The key thing here is that the libfoo.so links need to point to the
libc6 libraries.  Check that there is no /lib/libc.so link.  In fact,
there should probably be no xyz.so files in /lib at all, except
/lib/ld.so.  (xyz-2.0.7.so files are ok.)  Check that /usr/lib/libm.so
points at /usr/lib/libm.so.6.

>% /lib/libc.so.6
>GNU C Library production release version 2.0.7, by Roland McGrath et al.
>Compiled by GNU CC version 2.7.2.3.

Hmf, I guess Uli backported that to the 2.0 release.  Your
/usr/lib/libc.so is fine then.

zw


--
To UNSUBSCRIBE, email to debian-user-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


Reply to: