Probleme de compilation flat binary ou plain binary sur windows

Résolu
hexanium Messages postés 32 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 26 septembre 2005 - 20 juil. 2005 à 18:21
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

3 réponses

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,



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
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 juil. 2005 à 13:25
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.

@++
0
hexanium Messages postés 32 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 26 septembre 2005
21 juil. 2005 à 15:41
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
0
Rejoignez-nous