Statische Binärdatei erstellen

13

Ich habe eine Anwendung installiert [zB fdisk]. Für die Ausführung waren jedoch Bibliotheken erforderlich. Ich bin auf der Suche nach einem Dienstprogramm / Tool, mit dem ich aus bereits installierten Binärdateien eine statische Binärdatei erstellen kann . Damit ich es überall einsetzen kann.

Das einzige zuverlässige Tool, das ich gefunden habe, ist ErmineLightvon hier , aber dieses ist Share-Ware.

Gibt es Open-Source-Software für das gleiche?

EDIT fdisk ist nur ein Beispiel. Ich arbeite die meiste Zeit an LFS. Wenn ich also ein Dienstprogramm verwenden muss, muss ich die folgenden Schritte ausführen:

  1. Laden Sie die Quelle herunter
  2. konfigurieren
  3. machen
  4. Test machen
  5. machen installieren,

Um Zeit zu sparen, suche ich nach einer Lösung, in der ich eine statische Binärdatei aus Debian oder Fedora oder einer anderen Distribution erstellen, sie in LFS ausprobieren und wenn sie einwandfrei funktioniert oder meinen Anforderungen entspricht, werde ich es tun Gehen Sie mit Quellcode für die Kompilierung.

SHW
quelle
1
Ist das Ziel einfach zu übertragen (dh auf einen USB-Stick legen, mit diesem Prozessor überall hin mitnehmen)?
Mike Pennington

Antworten:

15

Wenn fdisk nur ein Beispiel ist und Ihr Ziel darin besteht, statische ausführbare Dateien aus dynamischen ausführbaren Dateien zu erstellen , versuchen Sie es mit Elf statifier . Es gibt sogar einen Vergleich mit Ermine (vom Ermine-Verkäufer, also Vorbehalt (Nicht-) Emptor) . Beachten Sie, dass

  • Wenn Sie über viele ausführbare Dateien verfügen, ist die kombinierte Größe wahrscheinlich größer als die kombinierte Größe der dynamisch verknüpften ausführbaren Dateien plus der erforderlichen dynamischen Bibliotheken.
  • Es gibt Funktionen von GNU libc, die in statisch verknüpften ausführbaren Dateien möglicherweise nicht funktionieren, wie NSS (Datenbanken mit Benutzernamen, Hostnamen usw.) und länderspezifische Funktionen.

Wenn Sie eine kleine, tragbare Suite von Systemtools haben möchten , suchen Sie nach BusyBox , einer Suite von Kerntools für eingebettete Systeme (einschließlich fdisk). Möglicherweise interessieren Sie sich auch für eine kleinere Standardbibliothek als Glibc, z. B. Dietlibc oder µClibc .

Gilles 'SO - hör auf böse zu sein'
quelle
1
Ich habe es mit Elf Statifier versucht, aber zu meiner Überraschung. Es hat nicht funktioniert. Es schlägt fehl. Ich habe es viele Male mit vielen Distributionen mit vielen Dienstprogrammen versucht.
SHW
1
Dies ist wahrscheinlich ein Fehler bei der Adress-Randomisierung: Erläutert wird dies hier: linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
Rmano
0

Nun ... das sieht nach einer sehr schlechten Idee aus. Aber es ist möglich.

Da es sich bei fdisk um Open Source handelt, nehmen Sie einfach den Quellcode und schauen Sie sich das Makefile an. Sie sollten eine Option finden, die beim Kompilieren "-static" an gcc übergibt.

Ich bin kein C / C ++ - Guru, aber soweit ich weiß, ist das Erstellen einer statisch verknüpften Binärdatei aus einer vorhandenen dynamisch verknüpften Binärdatei nicht möglich.

Wenn Sie es überall verwenden möchten, würde ich empfehlen, eine winzige Wartungsdistribution zu verwenden, die innerhalb von Sekunden startet und Sie alles ändern lässt.

Das ist für mich sinnvoller, weil Sie wahrscheinlich die Festplatte ändern möchten, auf der Ihre Linux / UNIX-Installation ausgeführt wird.

tiktak
quelle
Ihre Antwort scheint widersprüchlich, Sie sagten "... sehr schlechte Idee. Aber es ist möglich", und dann auch "... eine statisch verknüpfte Binärdatei aus einer vorhandenen dynamisch verknüpften Binärdatei zu erstellen ist nicht möglich". Bitte klären Sie Ihre Antwort, es wäre sehr hilfreich.
JM Becker
@ TechZilla: Erstellen einer statischen Binärdatei ist möglich, aber nicht per Tiktak. Erstellen einer statischen Binärdatei aus einer vorhandenen dynamisch verknüpften Binärdatei . In der akzeptierten Antwort finden Sie jedoch einige mögliche Möglichkeiten, Letzteres zu tun. [Anmerkung: Der Kommentar ist eher für zukünftige Leser gedacht, als für Kritik an allem, was hier ist.]
Lindes,
-3

Sie können auch ELFex Linker verwenden , ein ziemlich cooles Programm, das ich gerade entdeckt habe, seine GUI und Sie können statische ausführbare Dateien aus der dynamischen ausführbaren Datei erstellen.

Josh
quelle
Der Link funktioniert nicht.
Jakuje
Link funktioniert bei mir und scheint die Frage direkt zu beantworten. Ich würde vorschlagen, es ist kein Spam.
Roaima
Der Link funktioniert bei mir. Die Seite enthält die Anzahl der Tippfehler / Grammatikfehler / redaktionellen Fehler, die Sie von der Arbeit eines professionellen Programmierers erwarten können - mehr als Sie es von einer professionellen Website erwarten würden, weniger als Sie es von einer Phishing-E-Mail erwarten würden. Über das Gleiche wie im obigen Beitrag, denke darüber nach. Es scheint verdächtig, dass dieser brandneue Benutzer gerade noch rechtzeitig zu Stack Exchange kommt, um einen Link zu einer scheinbar brandneuen Website zu veröffentlichen.
G-Man sagt, dass Monica