2016-06-01 14 views

Antwort

0

Nein, das wird nicht funktionieren, egal wie du es würfelst.

Alle Symbol-Ordnungszahlen wichtiger Umlagerungen aus der Prozedur-Verknüpfungstabelle und der globalen Offset-Tabelle sind nicht mehr korrekt. Alle Versuche, die intern gespeicherten Symbol-Hash-Abschnitte aufzulösen, würden in Panik geraten, und Sie würden mit einem gebrochenen Haufen von Bytes zurückbleiben. Selbst wenn Sie diese erstaunliche Unordnung umgehen müssten, hätten Sie eine Reihe von entweder halb kopierten oder übergelaufenen Seiten mit Anweisungen aus mehreren dynamischen Bibliotheken, deren Größe nicht mehr korrekt aufgelöst wird.

Auf der positiven Seite sind statisch verknüpfte Binärdateien von dieser Änderung nicht betroffen.

+0

Dank für Ihren Vorschlag –

1

Extrem schlechte Idee. 3. Satz auf der ‚About‘ Seite von uclibc:

Portieren von Anwendungen von glibc auf uClibc beinhaltet typischerweise nur den Quellcode

1

Wie alle anderen Antworten recompiling sagt schon: das wird nicht funktionieren.

uClibc und glibc haben nicht einmal den gleichen dynamischen Bibliothekslader (ld-linux.so). Gemeinsam genutzte ausführbare Dateien geben an, welcher dynamische Bibliothekslader und welche gemeinsamen Bibliotheken sie benötigen. Sie können diese Informationen mit readelf -l /path/to/executable (für den dynamischen Bibliothekslader) und readelf -d für die gemeinsam genutzten Bibliotheken abrufen.

Ein Programm verknüpft gegen glibc so etwas wie dieses geben wird:

INTERP   0x000154 0x00008154 0x00008154 0x00013 0x00013 R 0x1 
     [Requesting program interpreter: /lib/ld-linux.so.3] 

0x00000001 (NEEDED)      Shared library: [libc.so.6] 

Ein Programm verknüpft gegen uClibc so etwas wie dieses geben:

INTERP   0x000114 0x00008114 0x00008114 0x00014 0x00014 R 0x1 
     [Requesting program interpreter: /lib/ld-uClibc.so.0] 

0x00000001 (NEEDED)      Shared library: [libc.so.1]