Compiler un C en executable (ms-dos) avec le compilateur gcc de Linux [Résolu]

Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 27 févr. 2011 à 18:17 - Dernière réponse :
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 30 mai 2011 à 18:05
[i]Bonjour,

J'ai 15 ans , j'ai/je développe depuis un moment un systeme d'exploitation (autonome)
qui tourne en 16 bit sous dos , nomée Microsf01 Cpcdos OS1 , ecrit en CpcdosC+ (language de programmation que j'ai developpé (en source , qb) )
voir mon site : ou

et j'ai décidé de faire une nouvelle version , OS2( TESTE [beta] de Cpcdos ) mais en C j'ai trouvé un compilateur , gcc sous linux (linux c'est pas trop mon truk).

Quand de fais la compilation avec linux ( gcc teste.c ) j'obtient un fichier ( a.out ) mais moi je veux un .exe qui peut s'executer sous ms-dos !

Comment faire ?

mercii ^^
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Dernière intervention
11 mars 2013
- 28 févr. 2011 à 21:57
3
Merci
Hmmm... compiler en 16 bits... Pas avec une version "standard" de gcc en tout cas. De base, les compilateurs sont compilés (forcément...) pour l'architecture sur laquelle ils tournent. Plus généralement, toute la chaine de compilation (compilateur et éditeur de liens) sont mis en place pour produire des exécutables pour la machine sur laquelle ils tournent.

Les versions actuelles de windows (depuis windows 95 sauf erreur) étant 32bits(architecture IA32) (certaines 64 bits, donc architecture x86_64), tu ne peux donc pas exécuter ton code susr une machine 16 bits...

Si tu veux changer d'OS ou d'architecture (ou les 2), il te faut te tourner vers la cross-compilation. Sous linux, il existe de nombreux outils pour mettre en place des chaines de compilations croisées (cross toolchain en anglais). Elles sont par contre toutes faites pour créer des binaires linux. Je ne saurais honêtement pas où chercher une toolchain IA32->16bits sous windows avec les librairies windows (également pour ton architecture 16 bits donc).

Merci JulSoft 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de JulSoft
Meilleure réponse
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
- 29 mai 2011 à 17:58
3
Merci
Salut,

Copier coller d'un de mes MP envoyé à quelqu'un d'autre, sujet proche (Génération d'exe 16 bits via gcc).
=========================================
Je ne vais pas pouvoir t'aider, ce domaine n'est vraiment pas ma spécialité.
Il semble quand même qu'il est deux trois infos sur internet, genre là, il semble utiliser du code asm (boot.asm) et du code C (kernel.c) :
http://stackoverflow.com/questions/2713340/help-in-building-an-16-bit-os

Plus d'info sur les options qui sont utilisées dans cet exemple :
http://devpit.org/wiki/Compiler_Options_for_Creating_Odd_Binaries
http://sourceware.org/binutils/docs-2.20/as/i386_002d16bit.html

Il a posé une deuxième question ici :
http://stackoverflow.com/questions/2722201/building-16-bit-os-character-array-not-working

Et un autre a eu un souci similaire là :
http://stackoverflow.com/questions/4553121/stack-problem-in-bootloader-its-written-by-myself

Et bien sûr la doc sur les options gcc, compilo et linker :
http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html#Option-Summary
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
=========================================

Mais pour faire des .exe 16 bits pour DOS, tu devrais plutôt regarder du côté d'un vieux compilo C. Par exemple le célèbre turbo C.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_rt15
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 27 févr. 2011 à 21:11
0
Merci
gcc ne fait pas d'exécutable pour Windows tout simplement.
Regarde du côté de mingw disponible dans cygwin.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Dernière intervention
11 mars 2013
- 27 févr. 2011 à 23:53
0
Merci
@CptPingu: sisi, gcc est capable de compiler pour windows... Par contre il faut qu'il ait lui même été compilé pour le faire (soit c'est une version windows de gcc, soit une version linux faite pour faire de la cross compilation, et c'est encore une autre histoire...).

De base, quelle que soit la version, la sortie de gcc est un fichier a.out. pour qu'il porte un autre nom (et ce n'est qu'un renommage), il faut lui préciser le nom du fichier de sortie avec le paramètre -o

exemple:
gcc main.c -o mon_programme.exe

Mais encore une fois, de base, on ne peut pas compiler pour windows depuis un environnement Linux, il faut mettre en place toute la chaine de compilation appropriée.
Commenter la réponse de JulSoft
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 00:38
0
Merci
ah ok

je vais tester ca sous msdos
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 00:50
0
Merci
j'ai compilé avec gcc main.c -o mon_programme.exe ,

je l'ai testé sous windows , dans la console ca marque très vite :
" Nom commandes ou fichier incorrecte "

donc enfaite il lis le .exe mais ce sont les syntax du fichier que windows ne supporte pas .

comment faire là ? ^^
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 00:51
0
Merci
sinon sous ubuntu (linux) ca marche bien
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 01:32
0
Merci
Enfaite mon but est de programmer sous dos en C plu en assembleur ou autre

et de pouvoir le compiler en .exe pour pouvoir l'exécuter sous ms-dos .

et aussi pourvoir avoir (comme gcc) une grande bibliothèque (.c/.h/c++...)

amoins qu'il est une façon pour que la compilation avec gcc soit compatible avec windows
Commenter la réponse de Cpcdos
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 28 févr. 2011 à 10:14
0
Merci
@JulSoft: C'est tout à fait vrai (Y en a un dans le vieux dev-cpp si je ne m'abuse). Je parlais du gcc de base. De base il ne le fait pas. Mais c'est une précision intéressante, je ne me suis jamais penché sur ce sujet. Si tu écris un petit tuto sur la cross compilation, je serais le premier à te lire :p

@Cpcdos: Un executable Windows et un executable Linux diffèrent par la forme. L'extension ne change rien. Tu pourrais aussi compiler avec un compilateur Windows, tout simplement, non ? (Celui contenu dans Visual Studio ne convient pas ?)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Dernière intervention
11 mars 2013
- 28 févr. 2011 à 11:12
0
Merci
@CptPingu: Je n'ai pas vraiment pratiqué la cross-compilation... 2-3 tentatives de linux à linux, mais pour des architectures différentes, et rien de franchement concluant, du coup va faloir attendre un peu;-)

Sinon, gcc pour windows fait partie de cygwin : http://www.sourceware.org/cygwin/
Commenter la réponse de JulSoft
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 11:30
0
Merci
J'ai trouvé (j'ai pas encore testé) sur DevC++ il y a les compilateur gcc !!
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 19:22
0
Merci
j'ai trouvé et testé le compilateur gcc sous windows, mais le problème quand je compile en .exe ou même .com (avant de tester sous dos)quand je fais une edition hexadécimale, je trouve en première ligne :" This program cannot be run in dos mode " , donc pas la pène de le tester sous dos.

donc

Il y a t-il un compilateur C pour DOS (16 bit) ?
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 28 févr. 2011 à 22:46
0
Merci
a ok
Commenter la réponse de Cpcdos
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
- 30 mai 2011 à 18:05
0
Merci
Dakk mercii beaucoup !!!!!
Commenter la réponse de Cpcdos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.