[PATCH] Always create lib32 and lib64 symlinks
Ralf Corsepius
rc040203@freenet.de
Wed Sep 29 14:40:00 GMT 2010
On 09/29/2010 04:33 PM, Anthony Foiani wrote:
> # HG changeset patch
> # User Anthony Foiani<anthony.foiani@gmail.com>
> # Date 1285770576 21600
> # Node ID 10f0f77c04eba49613f054dab9527ca0dfa3bad5
> # Parent 5676bb6d9d7a61a062d0b8bf86c9ddccfcae4f7c
> Always create lib32 and lib64 symlinks.
>
> Since we always remove them without checking CT_HOST, we need to
> create them without checking CT_HOST either.
>
> Signed-off-by: Anthony Foiani<anthony.foiani@gmail.com>
>
> diff -r 5676bb6d9d7a -r 10f0f77c04eb scripts/crosstool-NG.sh.in
> --- a/scripts/crosstool-NG.sh.in Wed Sep 29 08:27:56 2010 -0600
> +++ b/scripts/crosstool-NG.sh.in Wed Sep 29 08:29:36 2010 -0600
> @@ -328,23 +328,22 @@
> CT_DoExecLog ALL ln -sf "./${CT_SYSROOT_DIR_PREFIX}/sys-root/usr/include" "${CT_PREFIX_DIR}/${CT_TARGET}/include"
> fi
>
> - # Now, in case we're 64 bits, just have lib64/ be a symlink to lib/
> - # so as to have all libraries in the same directory (we can do that
> - # because we are *not* multilib).
> - # Mips64 with n32 emulation install its libs in lib32, so also prepare
> - # these symlinks
> - # Not all the symlinks are necessary, but better safe than sorry...
> - if [ "${CT_ARCH_64}" = "y" ]; then
> - for d in \
> - "${CT_PREFIX_DIR}" \
> - "${CT_SYSROOT_DIR}" \
> - "${CT_SYSROOT_DIR}/usr" \
> - "${CT_PREFIX_DIR}/${CT_TARGET}" \
> - ; do
> - CT_DoExecLog ALL ln -sf "lib" "${d}/lib32"
> - CT_DoExecLog ALL ln -sf "lib" "${d}/lib64"
> - done
> - fi
> + # Since we're *not* multi-lib on the build side, we want all the
> + # libraries to end up in "lib". We create "lib64" (for 64-bit
> + # build or host architectures) and "lib32" (for 32-bit emulation
> + # on 64-bit) as symlinks to "lib".
> + #
> + # Not all of these symlinks are necessary, but better safe than
> + # sorry. They are summarily removed by build/internals.sh:do_finish.
> + for d in \
> + "${CT_PREFIX_DIR}" \
> + "${CT_SYSROOT_DIR}" \
> + "${CT_SYSROOT_DIR}/usr" \
> + "${CT_PREFIX_DIR}/${CT_TARGET}" \
> + ; do
> + CT_DoExecLog ALL ln -sf "lib" "${d}/lib32"
> + CT_DoExecLog ALL ln -sf "lib" "${d}/lib64"
> + done
>
> # Determine build system if not set by the user
> if [ -z "${CT_BUILD}" ]; then
Again, this is all wrong on multi-arch'ed systems (e.g. Fedora).
You must not symlink 32bit libraries to 64bit libraries and vice versa.
Ralf
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list