[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can't cross-compile with same libdir as the host one
From: |
Loïc Minier |
Subject: |
Re: Can't cross-compile with same libdir as the host one |
Date: |
Mon, 1 Nov 2010 16:12:28 -0700 |
On Mon, Nov 01, 2010, Ralf Wildenhues wrote:
> > It is entirely possible that this is a toolchain bug, but I think
> > libtool has this design to use -rpath to specify the installation
> > directory, which might be why the linker looks in this directory.
>
> Can you work around it by using the Libtool 2.4 --with-sysroot feature?
> Please report back if that doesn't help.
I didn't manage to get it working with this feature; I hope I'm using
it properly
Starting from tests/depdemo as the previous time, I tried:
./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib
--with-sysroot=/usr/arm-linux-gnueabi
make install DESTDIR=`pwd`/destdir
and it fails as follows:
libtool: link: ( cd ".libs" && rm -f "libl2.la" && ln -s "../libl2.la"
"libl2.la" )
make[2]: entrant dans le répertoire «
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2 »
test -z "/usr/lib" || /bin/mkdir -p
"/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib"
/bin/bash ../libtool --mode=install /usr/bin/install -c libl2.la
'/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib'
libtool: install: warning: relinking `libl2.la'
libtool: install: (cd
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2; /bin/bash
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/libtool --tag CC
--mode=relink arm-linux-gnueabi-gcc -g -O2 -no-undefined -o libl2.la -rpath
/usr/lib l2.lo ../l1/libl1.la -inst-prefix-dir
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir)
libtool: relink: arm-linux-gnueabi-gcc -shared -fPIC -DPIC .libs/l2.o
-L/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib
-L/usr/lib -ll1 -O2 -Wl,-soname -Wl,libl2.so.0 -o .libs/libl2.so.0.0.0
/usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld:
skipping incompatible /usr/lib/libc.so when searching for -lc
/usr/lib/libc.a: could not read symbols: File format not recognized
In any case, passing special ./configure flags would not make this
particular project easy as these are encoded in many individual Debian
source packages, so it would make it hard to cross-compile them without
modification.
I tried this as well:
./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib
--with-sysroot=/usr/arm-linux-gnueabi CFLAGS="--sysroot /usr/arm-linux-gnueabi"
and got:
make[2]: entrant dans le répertoire «
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2 »
test -z "/usr/lib" || /bin/mkdir -p
"/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib"
/bin/bash ../libtool --mode=install /usr/bin/install -c libl2.la
'/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib'
libtool: install: warning: relinking `libl2.la'
libtool: install: (cd
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2; /bin/bash
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/libtool --tag CC
--mode=relink arm-linux-gnueabi-gcc --sysroot /usr/arm-linux-gnueabi
-no-undefined -o libl2.la -rpath /usr/lib l2.lo ../l1/libl1.la -inst-prefix-dir
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir)
libtool: relink: arm-linux-gnueabi-gcc -shared -fPIC -DPIC .libs/l2.o
-L/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib
-L/usr/lib -ll1 --sysroot /usr/arm-linux-gnueabi -Wl,-soname -Wl,libl2.so.0
-o .libs/libl2.so.0.0.0
/usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld:
skipping incompatible /usr/lib/libc.so when searching for -lc
/usr/lib/libc.a: could not read symbols: File format not recognized
Even this doesn't work:
./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib
--with-sysroot=/usr/arm-linux-gnueabi CFLAGS="--sysroot /usr/arm-linux-gnueabi
-L/usr/arm-linux-gnueabi"
I think that's because RPATH takes precedence over -L; I tried adding
-rpath=/usr/arm-linux-gnueabi -rpath-link=/usr/arm-linux-gnueabi to
CFLAGS as well, but no luck there either.
Cheers,
--
Loïc Minier