crosstool switching to /lib + /usr/lib ?
Tue Jan 13 17:18:00 GMT 2004
Kai Ruottu wrote:
> Daniel Kegel <firstname.lastname@example.org> wrote:
>>it looks like supporting x86_64 means using --with-sysroot, and
>>that means the libraries built by crosstool will be split
>>between /lib and /usr/lib instead of being just in /lib as they
>>were before, at least for x86_64.
> I have recently built all my own glibcs as if they were for the native
> platform and copied the prebuilt glibcs 'as is' from the '.rpm's
> and '.deb's. So they have always these '/lib' and '/usr/lib' plus
> all kind of weird stuff in 'sbin', 'libexec' etc. subdirs...
OK, so at least Kai won't mind the split, as he's already coping with it...
> I think this issue about "how-to-symlink" was at least partially
> discussed recently but maybe it didn't become clear that it is not
> "nuclear science" ...
A better name for all this might be "brain salad surgery" :-)
> Maybe the only extra symlinks needed in the sysroot'ed cross-tools
> were those for libc.so.6 and ld-linux*.so.2, and for the multilib'ed
> '32' subdirectory:
> /home1/host-x86_64-linux/usr/lib64 > l 32 libc.so.6 ld-linux*
> lrwxrwxrwx 1 root root 6 Dec 17 18:15 32 -> ../lib
> lrwxrwxrwx 1 root root 32 Dec 17 18:01 ld-linux-x86-64.so.2 -> ../../lib64/ld-linux-x86-64.so.2
> lrwxrwxrwx 1 root root 21 Dec 19 00:16 libc.so.6 -> ../../lib64/libc.so.6
> /home1/host-x86_64-linux/usr/lib64 > cd 32
> /home1/host-x86_64-linux/usr/lib > l libc.so.6 ld-linux*
> lrwxrwxrwx 1 root root 23 Dec 17 17:12 ld-linux.so.2 -> ../../lib/ld-linux.so.2
> lrwxrwxrwx 1 root root 19 Dec 17 17:12 libc.so.6 -> ../../lib/libc.so.6
> A native x86_64-linux-gnu install doesn't have these symlinks from '/usr/lib' to '/lib'.
> 'Normalize' scripts like:
> /home1/host-x86_64-linux/usr/bin > cat fix-64bit-symlinks.sh
> ln -f -s ../../lib64/ld-linux.so.2 ld-linux.so.2
> ln -f -s ../../lib64/libutil.so.1 libutil.so
> (these were only for the 'minimal' C libraries)
> were required to fix the symlinks in the original SuSE 9.0 glibcs.
> Quite equivalent script with '../../lib' was required to fix the
> symlinks in the 32-bit SuSE 9.0 glibc-2.3.2.
> The '-rpath-link' required for the '32' multilib is of course a nuisance
> when the 64-bit default libs will be found automagically...
> As seen, using the '--with-sysroot' wasn't at all obligatory, but maybe the
> X11, GUI-toolkits etc. extra stuff would require for instance a '-L/usr/X11R6/lib'
> working in the cross case too...
> ... But how to automatize all this with a script has been
> left out. In this x86_64 case the sanity in the self built glibcs is also unsolved.
> One can build and use them in the previous scheme, but whether the produced binaries
> will then run on SuSE 9.0 or on the x86_64 ES-models from RedHat and SuSE, is more
> or less unclear.
Yeah, I guess you're right, with enough symlinks and maybe -rpath-link,
you can make x86 -> x86_64 work without --with-sysroot.
I'm trying to avoid those measures, though, since I really do want the
executables I produce to run properly on SuSE and RedHat.
And I think I've finally got an automated script that builds it all
properly. I'll know more once I get an x86_64 box to test with.
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to email@example.com
More information about the crossgcc