L'utilisation de différences entre les deux. un., .ELF, .EXE et .COFF

Ne m'obtenez pas le mal par la recherche à la question du titre - je sais ce qu'ils sont (format pour les fichiers exécutables portables). Mais mon intérêt portée est légèrement différente

MA CONFUSION

Je suis impliqué dans la ré-hébergement/reciblage des applications qui sont à l'origine de tiers. Le problème est que, parfois, les formats de codes sont également en .elf, .COFF formats et dit encore, "Exécutable et linkable".

Je suis avant tout un utilisateur de Windows et de savoir que lorsque vous compilez et assembler votre code C/C++, vous obtenez quelque chose de similaire .o ou .obj. qui ne sont pas exécutables (eh bien, je n'ai jamais essayé de les exécuter). Mais lorsque vous remplissez la liaison statique et dynamique des bibliothèques et de la finition du bâtiment, l'exécutable s'affiche. Ma compréhension est que vous pouvez ensuite aller sur et lien exécutable ou "bash" de le tester avec une certaine forme de script si nécessaire.

Cependant, dans Linux (ou UNIX-like systèmes).o fichiers après avoir compiler et assembler le code C/C++. Et une fois que le lien est fait, l'exécutable est dans une.format de sortie (au moins dans la distribution Ubuntu de Linux). Il peut très bien être .elf dans certains autres distrib. Dans ma recherche rapide sur le web aucune des sources mentionné quelque chose au sujet .o fichiers que les fichiers exécutables.

QUESTIONS

Donc, ma question tourne dans les points suivants:

  1. Quel est le vrai définitions pour les exécutables et le code de l'objet?

  2. Comment est-ce que Windows et UNIX plate-forme couvre à la fois les exécutables et le code de l'objet sous le même format de fichier (.COFF, .elf).

  3. Suis-je une mauvaise interprétation de "Linkable"? Mon interprétation de "Linkable" est quelque chose qui est compilé en code objet et peut ensuite être "lié" à d'autres statique/bibliothèques de liens dynamiques. Est-ce une pensée stupide?

  4. Basé sur la question 1. (et peut-être 2) dois-je utiliser les tables de symboles (par exemple .UML ou .Les fichiers de MAPPAGE) avec le code de l'objet, alors? Symboles comme dans les symboles de débogage et de les utiliser lors de la ré-héberger les fichiers exécutables, les fichiers objets sur une machine différente.

Merci à l'avance pour que le droit à des coups de coude. En attendant, je vais continuer à creuser et mettre à jour la question si nécessaire.

Mise à JOUR

J'ai réussi à creuser cette de quelque part 🙁 Semble, comme beaucoup à avaler pour moi.

OriginalL'auteur ha9u63ar | 2013-06-27