Question

Disons que j'ai créé un fichier objet à partir d'un hello.c sur un x86 ordinateur, puis envoyé ce fichier à un BRAS ordinateur.Serait-il capable de créer un exécutable à partir du fichier objet reçu ?En supposant que nous utilisons gcc.


Note:

Je connais la compilation croisée en tant que méthode bien connue pour obtenir fondamentalement le même résultat final, mais j'étais curieux de connaître ce scénario spécifique.

J'en suis également conscient question, mais je voulais principalement insister sur différentes architectures de processeur et sur le même compilateur, car je n'ai pas trouvé ces points clairs avec ma modeste compréhension.

Était-ce utile?

La solution

Il n'existe aucune norme concernant le contenu d'un fichier objet.Certains peuvent déjà contenir des instructions machine, d'autres peuvent être indépendants de la plate-forme.Donc, le cas échéant, cela dépend de votre compilateur spécifique et devient donc une question spécifique à l'application.

Par exemple, le ELFE-header contient des informations sur le CPU et l'ABI pour lesquels le binaire a été compilé et cela met malheureusement déjà fin à la discussion.

Autres conseils

Vous pouvez être sûr que cela ne fonctionnera pas !Vous ne pouvez tout simplement jamais exécuter de code x86 sur un processeur arm.Ceci est indépendant de toute méta-information placée dans le fichier objet comme dans ELF.Le fichier objet contient du code exécutable et un processeur arm ne peut jamais exécuter un binaire créé pour un processeur différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top