[discuss] Problem building cross compiler for x86_64

Kai Ruottu karuottu@mbnet.fi
Thu Jan 19 15:29:00 GMT 2006


Kai Ruottu wrote:

> Manish Katiyar wrote:
>
>> Hi,
>>   yes i am using using Suse Linux Enterprise 9. I have downloaded the
>> package glibc-devel-2.3.4-23_23.4.x86_64.delta.rpm . Now I need to
>> just do
>
 Ok, you require more than this, the 'runtime' shared (aimed to '/lib') 
libraries
are also required. the 'glibc-2.3.4-23_23.4.x86_64.delta.rpm' . Then also
all the else 'glibc*-2.3.4-23_23.4.x86_64.delta.rpm' packages maybe, but
the shared and the development parts are the minimum...

 And of course all the 32-bit libraries for the x86_64 bi-arch target 
should be
installed...

>>
>> rpm -i glibc-devel-2.3.4-23_23.4.x86_64.delta.rpm
>> and then start building my gcc. Is it correct.? How do I specify where
>> to install the rpm?. Please correct the steps to be followed after
>> installing this rpm.
>
 The libraries could be put below some $sysroot, for instance:

     /opt/host-x86_64-suse-linux/...

in 'lib*', 'usr/include', 'usr/lib*' there.

 The cross-GCC though searches from '$prefix/$target/...' so the 
'$sysroot/usr/include'
and '$sysroot/usr/lib64' (the default libs) should be seen as 'include' 
and 'lib' there.
Symlinking them seen there is the way...

 Generally the stuff in 'lib*' should be symlinked to be seen in the 
'usr/lib*' too but just
SuSE has used non-standard symlinks to the absolute '/lib*' instead of  
to the relative
'../../lib*' which a self-made glibc would use. And which Red Hat, 
Debian etc. other
distros are using too...  So be prepared to fix the symlinks so that the 
'lib*' stuff is
seen in the 'usr/lib*' too. Or think copying everything there. The 
'libc.so' scripts are also
problems and should be edited to not have any absolute paths...

 The 32 bit libs will be searched from the '$prefix/$target/lib/32', so 
the installed 64 bit
libs in '$sysroot/usr/lib64' should also include a symlink '32 -> 
../lib'... And also the
'ld-linux*.so.2's plus the 'libc.so.6's should be seen in the 'usr/lib*' 
directories...

 Furthermore the '$prefix/$target/include' should be symlinked to be 
seen also as the
'$prefix/$target/sys-include'. No sane explanation for this, please ask 
the GCC
developers why...

 When the target C library, headers and libraries, is preinstalled just 
as the target
binutils are, the GCC build should succeed nicely.

 All these things are equivalent to putting different liquids into a car 
but unfortunately
the GCC documentation has no "Owner's Manual", only that "Driver's 
Manual"...
Maybe the Linux distro should provide this and describe there where the 
stuff can
be found... People are expected only to drive their cars, but never 
opening the hood.
Then these car drivers are really expected to be capable to build cars :-(



------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.org



More information about the crossgcc mailing list