2011-06-02 1 views
0

Comment puis-je détecter si un fichier est un objet compilé (.o .a (bibliothèque)) ou exécutable, sans l'extension de fichier?Comment détecter .o/.a/objet compilé/exécutable c/C++ sans extension? (pour ensuite émettre 'quoi' sur le fichier pour voir à quoi il a été compilé)

Je veux faire cela afin que je puisse ensuite émettre la commande standard what pour voir quels fichiers .c/.h ont été utilisés pour construire le binaire.

Vraisemblablement au début du fichier ou d'un autre motif qu'il y aurait une sorte d'en-tête pour chercher (?)

jeté un oeil ici et ailleurs déjà un peu, mais les réponses ont tendance à être sur MIME types et développement web/traitement de ces fichiers:

+1

(Si vous êtes sous Unix/Linux, la commande 'file' est-elle utile?) – marnir

+0

+1 Yep it! Exemple: exécutable ELB 32 bits ELF, Intel 80386, version 1 (SYSV), pour GNU/Linux 2.2.5, lié dynamiquement (utilise des librairies partagées), pour GNU/Linux 2.2.5, non supprimé - Je peux utiliser regex pour analyser ces données de texte, cela devrait donc fonctionner pour moi. Alors pourquoi n'avez-vous pas soumis cela comme votre réponse plutôt que comme un commentaire? Ne sois pas timide! Si vous soumettez cela comme une réponse, je serais probablement +1 et l'accepter, je vais donner une chance aux autres, mais votre suggestion me semble très bien. – therobyouknow

+1

Parce que c'était un peu une conjecture: P Je vais soumettre alors :) – marnir

Répondre

1

Si vous êtes sous Unix/Linux, la commande file est utile pour déterminer le type de fichiers de fichiers sans compter sur une extension de fichier.

Il regarde des choses comme « est-ce un dispositif spécial plutôt qu'un fichier normal », pour ensuite rechercher « nombres magiques » qui identifient certains format de fichier, etc.

+0

+1 Cela devrait faire ce dont j'ai besoin - merci: par exemple. ELF 32 bits exécutable LSB, Intel 80386, version 1 (SYSV), pour GNU/Linux 2.2.5, lié dynamiquement (utilise des librairies partagées), pour GNU/Linux 2.2.5, non effacé - je peux utiliser regex pour analyser ces données de texte, donc cela devrait fonctionner pour moi. – therobyouknow