Compiler un C en executable (ms-dos) avec le compilateur gcc de Linux

Résolu
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 27 févr. 2011 à 18:17
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre 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 ^^
A voir également:

14 réponses

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
28 févr. 2011 à 21:57
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).
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
29 mai 2011 à 17:58
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.
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
27 févr. 2011 à 21:11
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
0
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
27 févr. 2011 à 23:53
@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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 00:38
ah ok

je vais tester ca sous msdos
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 00:50
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à ? ^^
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 00:51
sinon sous ubuntu (linux) ca marche bien
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 01:32
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
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 févr. 2011 à 10:14
@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
0
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
28 févr. 2011 à 11:12
@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/
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 11:30
J'ai trouvé (j'ai pas encore testé) sur DevC++ il y a les compilateur gcc !!
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 19:22
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) ?
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
28 févr. 2011 à 22:46
a ok
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
30 mai 2011 à 18:05
Dakk mercii beaucoup !!!!!
0
Rejoignez-nous