Probleme de compilation flat binary ou plain binary sur windows [Résolu]

Messages postés
32
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
26 septembre 2005
- - Dernière réponse : hexanium
Messages postés
32
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
26 septembre 2005
- 21 juil. 2005 à 23:08
Salut,

j'essaye de compiler un fichier C en binaire plat, c'est a dire le bytecode pur sans entete ni ajout de library.

J'ai essayé sous Linux ca marche tres bien, j'ai essayez sous windows et la impossible !!!

je ne comprend pas tous , quelqu'un peut il m'aider ?



cliquez ici pour voir la procedure d'essais



Sous linux:





Sous windows






Message d'erreur:

undefined reference to '_alloca' -> _alloca non définis, bah c'est
pas moi qui à mis ça dans le source !!!

undefined reference to '__main' -> _main non définis, bah c'est
pas moi qui à mis ça dans le source !!!





Lorsqu'on essaye d'aller plus loin, linkage
directement en binaire on a le message d'erreur :

ld: PE operations on non PE file. -> Bah je ne veux pas faire de PE moi
justement !!!!

(Les PE sont les formats d'exécutables sur windows)







Je ne comprend pas cette différences entre
les deux OS sur une même appli portée.




<li>
D'ou viennent ces underscore '_' ? Comment
s'en débarrasser ?


</li><li>
D'ou vient ce __main ? Comment s'en
débarrasser ?


</li><li>
D'ou vient ce __alloca ? Comment s'en
débarrasser ?


</li><li>
Pourquoi dois je passer "_main" au
lieu de "main" comme point d'entrée ?


</li><li>
Bref comment compiler plain binary sous
Windows avec gcc et lg ?.


</li><li>
Pourquoi ces différences entre les versions
portées gcc et ld ?


</li><li>
Quelqu'un a t'il déja réussi a faire ca
sous windows ?

</li>



Quelqu'un peut il maider ?



Merci d'avance



Hexanium
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
32
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
26 septembre 2005
3
Merci
Salut,



Bien en postant sur plusieurs forum j'ai trouvé des reponces a mes questions:

la synthese est ici en bas de l'article:

http://www.hexanium.com/hexatronic/other/binary_c_compile/binary_c_compile.htm

Merci à vous pour le coup de main !



Hexanium

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Commenter la réponse de hexanium
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
salut,

déjà, je constate que les ligne de commande ld ne sont pas les memes:
"ld test.o -e main -o test_elf" et "ld test.o -e main"

c'est quoi l'option -o ?

avec gcc tu doit pouvoir sortir un fichier elf meme sous windows, il ne sera pas executable sur ce system d'exploitation et c'est tout.

@++
Commenter la réponse de cs_patatalo
Messages postés
32
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
26 septembre 2005
0
Merci
Salut Patatalo,



Bien en effet les lignes ne sont pas les memes, l'option -o permet de
spécifier le nom du fichier de sortie si non il a un nom par defaut.En
fait j'aimerais arriver a compiler un binaire plat, sans entete PE sans
meme l'entete ELF tous ca, le byte code pur, comme quand on compile un
noyau. Le truc c'est que ca marche sur linux, on a le bytecode direct,
sous Windows, je n'y arrive pas !

Un peu relou ce truc,

pourtant j'arrive bien a compiler un exe (PE) sous gcc



Merci de m'aider



Hexanium
Commenter la réponse de hexanium