Frage

Bei einer Datei, mag ich überprüfen, ob dies eine DLL ist, oder ein gemeinsam genutztes Objekt (Linux) oder ein dylib (Mac OS X), oder etwas anderes. Mein Hauptinteresse ist Differenzierung ausführbare Datei und DLL unter Linux und Mac OS X. Für Fenster, die Erweiterung sollte für mein Problem genug sein.

Ich habe bereits überprüft, dass die magische Zahl Technik funktioniert nicht für Linux als ausführbare und Objekten gemeinsam beide die gleiche Nummer haben.

War es hilfreich?

Lösung

Die Unix (Linux und Mac OS X) Befehl file weiß, wie Dateitypen zu identifizieren.

man file informieren Sie über die ‚magischen‘ Informationen verwendet, dies zu tun, und insbesondere dann, wenn die Datei mit dieser Information zu finden ist.

man 5 magic beschreibt die Datei im Detail und sollten Sie auch sagen, wo sie lebt. Sie können einen Blick hinein und zieht alles, was Sie von ihm brauchen. Und / oder Krippe Code von der Quelle der file.

Update:
Beachten Sie, dass unter Linux eine Datei könnten beide eine ausführbare Datei und eine gemeinsam genutzte Bibliothek zur gleichen Zeit.
Ein Beispiel dafür ist /lib/libc.so.6 (eine gemeinsam genutzte Bibliothek, die ausgeführt werden können).
Ein weiteres Beispiel: jede ausführbare Datei mit -pie Flag gebaut als eine gemeinsam genutzte Bibliothek verwendet werden. Sehen Sie diese Antwort für Details .

Andere Tipps

Mit dem file Tool (für Linux und Mac OS).

ein Programm schreiben, versuchen, die DLL zu laden - wenn es gelingt, ist es eine :)

Edit: Ok könnte dies auch für ausführbare Dateien erfolgreich sein: - /

scroll top