On Tuesday 30 March 2010 02:09, Rob Landley wrote:
> > 1.16.1 has been released today.
> 
> I rebuilt the set of statically linked more or less defconfig busybox 
> binaries 
> for various targets and uploaded them Morris, see 
> http://busybox.net/downloads/binaries/1.16.1
> 
> By the way, if you need statically linked strace for the same set of targets 
> (sometimes useful, it's come up here on this list a couple times), you can 
> find 
> that (and dropbear) at http://impactlinux.com/fwl/downloads/binaries

Hi Rob,

Wonderful job! This is so much further along than my crude
cross-compiler. You have fifteen architectures covered.
I had only two.


I downloaded cross-compiler-i686 and cross-compiler-x86_64
and I can build static executables using either
after I made symlinks
/usr/x86_64-unknown-linux -> 
/whereever/I/untarred/cross-compiler-x86_64/x86_64-unknown-linux

I have a few questions.

When I run "strace -oLOG -f x86_64-gcc --static t.c"
I see that it still tries to use your configured target path,
/home/landley/temp/firmware/build/cross-compiler-x86_64.
Can this be prevented? (I can send you LOG if you need it).

And second, dynamic linking ("x86_64-gcc t.c") also works,
but of course resulting binary needs some files to be in /lib,
in simplest case /lib/ld-uClibc.so.0 and /lib/libc.so.0:

# readelf -aW a.out
...
Program Headers:
  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz 
  Flg Align
  PHDR           0x000040 0x0000000000400040 0x0000000000400040 0x000150 
0x000150 R E 0x8
  INTERP         0x000190 0x0000000000400190 0x0000000000400190 0x000014 
0x000014 R   0x1
      [Requesting program interpreter: /lib/ld-uClibc.so.0]
  LOAD           0x000000 0x0000000000400000 0x0000000000400000 0x000439 
0x000439 R E 0x100000
  LOAD           0x00043c 0x000000000050043c 0x000000000050043c 0x000198 
0x00019c RW  0x100000
  DYNAMIC        0x000468 0x0000000000500468 0x0000000000500468 0x000130 
0x000130 RW  0x8
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 
0x000000 RW  0x8

 Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .interp .hash .dynsym .dynstr .rela.plt .init .plt .text .fini .rodata
   03     .eh_frame .ctors .dtors .jcr .dynamic .got.plt .data .bss
   04     .dynamic
   05

Dynamic section at offset 0x468 contains 14 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.0]
...

I can copy or symlink them to ones in cross-compiler-x86_64/lib
and it will start working.

But I can't make it for more than one
cross-compiling toolchain at once, right?
I can use either cross-compiler-i686 or cross-compiler-x86_64,
but not both at once. But that would be useful.
For example, in order to run randomconfig tests for both 32
and 64 bits in parallel overnight.

I know that various distros use different names, like /lib and /lib64,
to make it possible. How do they do it?

And do you think it might make sense for you
to use /lib-$CROSS instead of /lib for every (cross-)compiler,
making it possible to run many dynamically linked programs
against different sub-arches on the same machine?

This will be an overkill for the case when one runs just a plain
one-subarch, but it will still work for that case too, right?

-- 
vda
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to