2016-07-18 8 views
0

Ich habe immer gedacht, dass Linux-Binärdateien auf dem lokalen Computer kompiliert werden müssen, um aus verschiedenen Gründen (freigegebene Bibliotheken, ...) ausgeführt werden zu können. Aber es scheint, dass einige über mehrere Linux-Distributionen laufen können, ohne dass sie neu kompiliert werden müssen.Warum müssen einige Linux-Binärdateien neu kompiliert werden?

Zum Beispiel: hashcat. Sie haben eine 32-Bit- und eine 64-Bit-Binärdatei erstellt, aber beide vorkompiliert.

Wie ist das möglich und in welcher Situation ist dies generell möglich?

** Ich spreche nur über die Linux-Welt.

+1

Warum sollte sich Lunux in dieser Hinsicht radikal von anderen OS unterscheiden? (Es ist nicht). –

+0

@ n.m .: Weil Linux eine starke Open-Source-Mentalität hat, in der Binärkompatibilität nicht als selbstverständlich vorausgesetzt wird, aber Quellcodeverfügbarkeit ist. Unter Windows ist es genau umgekehrt. – MSalters

+0

@MSalters Mentalität ist eine Sache vut Technologie ist eine ganz andere. Welche technologischen Unterschiede gibt es? –

Antwort

1

Es gibt verschiedene Möglichkeiten zum Erstellen von Binärdateien. Ein Weg ist "statisch", was bedeutet, dass er alle benötigten Bibliotheken in der ausführbaren Datei selbst enthält, so dass es keine externen Abhängigkeiten gibt. Beim Erstellen können Sie jedoch selbst entscheiden, welche Bibliotheken enthalten sein sollen und welche zur Laufzeit gesucht werden. Sie können also einige sehr spezifische Bibliotheken in die Binärdatei einbeziehen, müssen sich jedoch auf einige weitere Standardbibliotheken verlassen, die bereits auf dem System vorhanden sind.

Darüber hinaus bieten die meisten Bibliotheken eine feste Schnittstelle, die im Laufe der Zeit im Allgemeinen gleich bleibt. Auf diese Weise spielt es keine Rolle, welche Version Sie auf Ihrem System haben oder wie genau sie kompiliert wurde. Solange die Funktionen, die die ausführbare Datei erwartet, da sind (und das gleiche "Verhalten" bieten), werden die Dinge gut laufen.

Verwandte Themen