Nachträgliches linken von binaries
Florian Lohoff
flo at rfc822.org
Wed Dec 22 01:19:17 CET 1999
On Wed, Dec 22, 1999 at 12:30:46AM +0100, Jan-Benedict Glaw wrote:
> Hallo!
>
> Ich hab' hier ein libc5 binary und möchte keine libc5 installieren. Ist es
> möglich, das (dynamisch gelinkte) binary im Nachhinein auf einem libc4-System
> statisch zu linken, sodaß es dann auch auf einem libc6-System läuft? Ich hab
> halt keine sourcen;(
Hmmm - nicht so wirklich ...
Hier mein versuch - Ich bekomme das so zusammengelinkt das das
resultierende binary keine unresolved symbols mehr zur libc6 hat
wie man unten sieht - Leider ist aber immer noch der dynamic linker dabei
und der scheint dann zu segfaulten ...
(flo at paradigm)/tmp/i# gcc -o test test.c
(flo at paradigm)/tmp/i# gcc -v -nostartfiles --static -o test-static test
Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2.3/specs
gcc version 2.7.2.3
ld -m elf_i386 -static -o test-static -L/usr/lib/gcc-lib/i486-linux/2.7.2.3 test -lgcc -lc -lgcc
(flo at paradigm)/tmp/i# ls -la test*
-rwxr-xr-x 1 flo flo 3902 Dec 22 01:09 test
-rwxr-xr-x 1 flo flo 108187 Dec 22 01:10 test-static
-rw-r--r-- 1 flo flo 23 Dec 22 00:58 test.c
(flo at paradigm)/tmp/i# ldd test-static
libc.so.6 => /lib/libc.so.6 (0x4000f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
(flo at paradigm)/tmp/i# ./test-static
Segmentation fault
Auch mit debugging symbols und gdb kommt man nicht wirklich weiter -
Anscheinend segfaulted der "ld-linux.so.2" der versucht noch symbols zu resolven
was natuerlich nicht funktioniert - Ein kleiner teil des ld-linux.so.2 wird
afaik statisch immer dazugelinkt - Den muesste man entfernen koennen.
Ach ja - Unter libc5 heist der dynamische linker anders - Ausserdem ist
der name Architecturabhaengig -> ABI Specs ...
Ich denke das ist aussichtslos ...
Flo
--
Florian Lohoff flo at rfc822.org +49-5241-470566
... The failure can be random; however, when it does occur, it is
catastrophic and is repeatable ... Cisco Field Notice
More information about the Linux
mailing list