Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1990 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Compilateur C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compilateur C

n°1886997
Zrari_h
Posté le 22-05-2009 à 11:47:57  profilanswer
 

Bonjour,
  Je cherche svp un compilateur C (une version de gcc par ex) qui compile un fichier .c en un binaire sans laisser sa signature.  
Je veux dire par exemple sous windows la plupart laisse "Cannot be run in MS-DOS..." et plein d'autre chose qui ne servent pas à grand chose.
En fait je cherche exactement un compilateur qui me traduit du C en language machine ce que j'ai écrit.  
Pour mieux me comprendre, mon application va être lancée au démarrage d'un Pc sur support physique bootable et il n'y aura aucun environnement sur la machine.
Peut être j'étais pas trés clair mes n'jesiter pas à me poser des questions.
Merci d'avance.
A+

mood
Publicité
Posté le 22-05-2009 à 11:47:57  profilanswer
 

n°1887008
couak
Posté le 22-05-2009 à 12:31:14  profilanswer
 

peut-être qu'en le compilant sans faire le "link" répond à ton problème
http://gcc.gnu.org/onlinedocs/gcc/ [...] ll-Options avec le switch "-c"

n°1887028
Zrari_h
Posté le 22-05-2009 à 14:26:23  profilanswer
 

Merci, je vais essayer ça dès que possible.
Je te remercie beaucoup couak :)

n°1887066
Un Program​meur
Posté le 22-05-2009 à 17:37:59  profilanswer
 

Si c'est du format de l'exécutable, c'est plus une fonction du linker ou même de programmes comme objcopy de GNU (regarde le format binary).  Mais renseigne-toi aussi sur la manière dont boot un ordinateur car il ne suffit généralement pas d'avoir un binaire pour qu'il fonctionne (un PC boot en mode 16 bits par exemple).  Et il y a tout le problème de ce dont a besoin la bibliothèque standard dont le code d'initialisation de l'exécutable.
 
Les exécutables pour Windows sont -- étaient? ma connaissance date beaucoup -- généralement valides dans deux formats d'exécutables: celui utilisé par DOS (où le programme se contente d'afficher le message dont tu te plains) et celui réellement utilisé par Windows.

n°1887069
Elmoricq
Modérateur
Posté le 22-05-2009 à 18:22:08  profilanswer
 

"étaient", depuis Windows 2000 qui est en archi NT, si je ne raconte pas d'âneries.

n°1887202
Zrari_h
Posté le 23-05-2009 à 14:31:39  profilanswer
 

bonjour, je vous remercie tous sur ces réponse.
En fait moi quand j'écris un programme en assembleur et je le compile, j'ai bien un fichier binaire qui ne fait que ce que je demande exactement. Déjà je l'affiche avec un éditeur hexa je retrouve les n bonnes instructions que j'ai écrites traduites en hexa et c'est exactement ce que je veux. Sauf que je suis plus alaise en C, je souhaite alors faire la même chose en C car en assembleur j'arrive pas à développer plus qu'une application Hello World :) j'y connais pas trop. Quand j'écris en C un programme Hello World et je l'ouvre avec un éditeur hexa, je trouve beaucoup plus que ce que j'ai écrit et j'aime bien éviter ça... J'espère que j'étais un peu plus clair!! si je vous embrouille n'hésitez pas à me le mentionner.
Merci d'avance

n°1887273
theshockwa​ve
I work at a firm named Koslow
Posté le 24-05-2009 à 01:26:51  profilanswer
 

quoi qu'il arrive, si tu génères un exécutable sous windows, que ce soit à partir d'un assembleur ou d'un compilateur quelconque, il doit respecter le format d'exécutables de windows.
 
Si ce que tu dis est valide, alors tu générais probablement des .com avec ton assembleur, et du coup, tu subissais (probablement, encore une fois, à ton insu) les restrictions inhérentes à un .com (code et données limités à un segment, si je ne me plante pas) ...
 
Dans le cas général, un compilo qui cible une machine sous windows produira aujourd'hui plus probablement un fichier au format PE


---------------
last.fm
n°1887309
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-05-2009 à 11:36:04  profilanswer
 

Zrari_h a écrit :

Quand j'écris en C un programme Hello World et je l'ouvre avec un éditeur hexa, je trouve beaucoup plus que ce que j'ai écrit et j'aime bien éviter ça...


Et oui... Ceci est tout à fait normal et inhérent aux langages de plus haut niveau que l'assembleur... L'assembleur est le langage de plus bas niveau qui existe, quand tu produis un exécutable en assembleur, la section de code ne contient que le code que tu as écrit et rien d'autre. En C, ou tout autre langage, la section de code peut contenir bien plus (appels au runtime notamment). C'est ce qui fait qu'un "Hello World" qui prendra quelques centaines d'octets en assembleur prendra plusieurs Ko en C ou autre.
Il n'y a rien à faire contre ça, sauf à te mettre à l'assembleur.
Après, pour ce qui est du format des exécutables, ça n'a rien à voir. Que ce soit en assembleur ou en C, tout exécutable sous Windows sera au format PE (MZ pour DOS autre que .com)


Message édité par Harkonnen le 24-05-2009 à 11:37:08

---------------
J'ai un string dans l'array (Paris Hilton)
n°1887644
matafan
Posté le 25-05-2009 à 15:15:08  profilanswer
 

Je ne sais pas si c'est vraiment en rapport avec ta question, mais le flag -S de gcc permet de générer du code assembleur.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Compilateur C

 

Sujets relatifs
[C#] changer texte label avec conflit de threadDétection droits admin (C++)
[C] Bus error, arbre et fichiersprogrammation en C: les matrices
[C#] Faire une seule instance de dll pour deux programmes[C] Probléme de récupération des données à travers ttyS (LINUX)
[Menu déroulant / Javascript/ C# ][C] Matrice de structures : probleme de remplissage
Programmer en C help SVP microchip PIC18Fsqrt et compilateur Visual C++
Plus de sujets relatifs à : Compilateur C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR