Hi Florian,

On Wed, Nov 14, 2012 at 10:22 AM, Florian Fainelli <flor...@openwrt.org> wrote:
> Hello Drasko,
>
> On Wednesday 14 November 2012 00:38:08 Drasko DRASKOVIC wrote:
>> Hi all,
>> Trying to cross compile libdespotify, I have run into problem with libtool :
>>
>> libtool  --tag=CC --verbose --mode=link
>> mipsel-openwrt-linux-uclibc-gcc -o libdespotify.la -rpath /usr/lib
>> -rpath-link 
>> /home/drasko/carambola/carambola/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/usr/lib
>> -L/home/drasko/carambola/carambola/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/lib
>> -L/home/drasko/carambola/carambola/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/usr/lib
>> -lz -lvorbisfile -lcrypto -lresolv -lpthread aes.lo auth.lo buf.lo
>> cache.lo channel.lo commands.lo dns.lo ezxml.lo handlers.lo
>> keyexchange.lo packet.lo puzzle.lo session.lo shn.lo sndqueue.lo
>> util.lo network.lo despotify.lo sha1.lo hmac.lo xml.lo
>> OpenWrt-libtool: link: gcc -shared  -fPIC -DPIC  .libs/aes.o
>> .libs/auth.o .libs/buf.o .libs/cache.o .libs/channel.o
>> .libs/commands.o .libs/dns.o .libs/ezxml.o .libs/handlers.o
>> .libs/keyexchange.o .libs/packet.o .libs/puzzle.o .libs/session.o
>> .libs/shn.o .libs/sndqueue.o .libs/util.o .libs/network.o
>> .libs/despotify.o .libs/sha1.o .libs/hmac.o .libs/xml.o
>> -L/home/drasko/carambola/carambola/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/lib
>> -L/home/drasko/carambola/carambola/staging_dir/target-mipsel_r2_uClibc-0.9.33.2/usr/lib
>> -lz -lvorbisfile -lcrypto -lresolv -lpthread    -Wl,-soname
>> -Wl,libdespotify.so.0 -o .libs/libdespotify.so.0.0.0
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> /usr/bin/ld.bfd.real: .libs/aes.o: Relocations in generic ELF (EM: 8)
>> .libs/aes.o: could not read symbols: File in wrong format
>> collect2: ld returned 1 exit status
>> make[3]: *** [libdespotify.la] Error 1
>>
>>
>> Instead of cross-compiler, libtool calls native gcc in the link mode
>> (in the compile mode everything OK, though).
>
> I see several issues with this log excerpt:
> - the first libtool link command uses /usr/lib as a host path (second line)
>   this needs fixing

I have passes -rpath as /usr/lib, as this should be the place where
this library will reside in the system. However, -rpath-link points to
staging_dir/target-mipsel_r2_uClibc-0.9.33.2/usr/lib, where other
libraries needed for linking should be found.

If this is not the correct procedure, where -rpath should point to?
And -rpath-link?

> - the second libtool command does not use the cross-linker, and for that I
>   have no idea yet

It does not, and it is related to the bug (or wrong params) in the
libtool described here :
http://www.metastatic.org/text/libtool.html

--tag=CC can be passed to libtool, and then it uses
mipsel-openwrt-linux-uclibc-gcc for compilatin, which is correct.
However, in the link stage with same --tag=CC passed, it switches to
the native gcc which is wrong and provokes errors.

Solution here is either to correct libtool or use cross libtool, I
think, but I am not quite sure. It sounds strange to me that I am the
first person in the world who cross compiles libraries with libtool on
OpenWRT...

>
>>
>> This problem is described here :
>> http://www.metastatic.org/text/libtool.html
>>
>>
>> I have two questions at this point :
>> 1) I sew that OpenWRT buildsystem uses staging_dir/host/bin/libtool.
>> If this (host) libtool is normally used for building packages and not
>> cross compiled libtool, did I do something wrong in my Makefile?
>
> The compiled libtool resides in host because it is actually compiled for the
> host system, there is no other libtool executable in the build system besides
> those copies provided by other packages we build.

So, if I undersand correctly, each package provides it's own libtool ?
Maybe some of these libtools are cross-compiled during package
cross-compilation.

However, it would be not a good practice to use libtool of some other package...

Is it the mandatory for every package that should use libtool to
provide it's own libtool ?

BR,
Drasko
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to