hexanium
Messages postés32Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention26 septembre 2005
-
20 juil. 2005 à 18:38
hexanium
Messages postés32Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention26 septembre 2005
-
26 juil. 2005 à 13:13
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 ?
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.
D'ou viennent ces underscore '_' ? Comment s'en débarrasser ?
D'ou vient ce __main ? Comment s'en débarrasser ?
D'ou vient ce __alloca ? Comment s'en débarrasser ?
Pourquoi dois je passer "_main" au lieu de "main" comme point d'entrée ?
Bref comment compiler plain binary sous Windows avec gcc et lg ?.
Pourquoi ces différences entre les versions portées gcc et ld ?
Quelqu'un a t'il déja réussi a faire ca sous windows ?
Quelqu'un peut il maider ?
Merci d'avance
Hexanium
A voir également:
Probleme de compilation flat binary ou plain binary sur windows
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 21 juil. 2005 à 17:43
"Pourquoi dois je passer "_main" au lieu de "main" comme point d'entrée ?"
Ben sous Windows la convention C (la __cdecl quoi) veut que les noms
des fonctions et des variables globales/statiques soient précédés d'un
underscore...
Pour ton problème c'est curieux...peut-être que la comparaison des
fichiers assembleurs générés avec l'option -S pourrait t'aider à
trouver?
---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 22 juil. 2005 à 12:11
Wah c'est cool que tu détailles problème et solution, si seulement tout le monde faisait ça ^^
Peitte remarque, dans ton code source du début, tu fais un int main() qui n'a pas de return 0, c'est mâl ;)
Le -S du objcopy peut aussi être remplacé par un -s dans ld non?
PS : Tout ça c'est pour un projet d'OS?
---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 22 juil. 2005 à 12:14
"Bienvenue sur le site Hexatronic,
Un site dédié à l'électronique orienté robotique et programmation.
Vous y trouverez une partie avec des conseils et explications techniques ainsi
qu'une partie avec mes réalisations personnelles."
Bon jcrois que j'ai compris l'intérêt pour toi de faire du flat binary :D
---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Vous n’avez pas trouvé la réponse que vous recherchez ?
hexanium
Messages postés32Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention26 septembre 2005 26 juil. 2005 à 13:13
Salut Funto66,
En effet pour le return dans le main, c'est pas tres jolie mais c'est
plus facile a regarder le code C compilé puis désassembler apres. C'est
un code tres simple dont le but est d'analyser le code desassemblé.
Mais en effet c'est pas tres propre sans return.
Pour le 'S' en effet sur objcopy ou ld cela a le meme effet.
En enfin, en effet c'est un petit OS. :D !
Je le développais sur Linux mais pendant les vacances j'avais pas de Linux sous la main, un XP familliale c tout !
J'ai pas mal géléré avant de trouver la methode de compile flat sous windows.
Merci pour tous les coup de paluches et remarques.