Domanda Compilare programmi composti da più sorgenti con Turbo C Compiler

mattstack

Utente Bronze
1 Aprile 2021
62
19
12
46
Salve, è da un po che non scrivo sul forum, spero possiate aiutarmi.
Sto cercando di sviluppare un programma che possa essere eseguito su MS-DOS (utilizzo l'emulatore Dos Box) ma ho dei problemi con la sua compilazione. Sto usando il compilatore TCC (Turbo C compiler), con il quale non riesco a compilare un programma composto da più moduli. Le ho provate tutte: ho provate ad utilizzare i file di progetto di TCC ma mi da problemi, ho provato a compilare separatamente i due moduli per poi collegarli con il linker ma mi da problemi, etc...
Ho organizzato il programma in tre moduli e un file di intestazione, chiamati rispettivamente main.c, graphics.c e graphics.h.
Non importa come compili il tutto ricevo sempre lo stesso errore:
Codice:
undefined symbol '_main' in C0S
So che TCC è un compilatore vecchio più di 30 anni e che quindi dovrei evitare di utilizzarlo. Però voglio proprio sviluppare un programma per MS-DOS, accedendo direttamente ai vari componenti hardware e effettuando direttamente le operazioni di output a video. Cose che non potrei fare sviluppando il programma per un moderno sistema operativo.
Vi lascio allegati i file che compongono il programma (ho dovuto cambiare tutte le estensioni in .txt):
 

Allegati

  • graphics_h.txt
    460 bytes · Visualizzazioni: 1
  • main_c.txt
    129 bytes · Visualizzazioni: 2
  • graphics_c.txt
    1.6 KB · Visualizzazioni: 1
compilatore TCC è molto vecchio e ci sono limitazioni nella capacità di compilare programmi con tanti moduli.

prima cosa prova a fare:

tcc main.c graphics.c -o program.exe
  1. Controlla se il compilatore TCC è impostato correttamente nell'emulatore DosBox.
  2. Utilizza un compilatore come GCC (forse è meglio)
  3. Se vuoi scrivere un programma con accesso diretto all'hardware del computer, potresti valutare l'uso di assembly invece di C, è la scelta migliore
 
Grazie per aver risposto. Ho provato ma a quanto pare il compilatore TCC non ha l'opzione -o.
Ho provato a compilare il programma specificando quindi il nome dei due sorgenti, ma ottengo sempre lo stesso errore.
Comunque riguardo alla scelta del linguaggio, ho deciso di utilizzare il C proprio per evitare di usare sempre l'Assembly. Dopo aver sviluppato una serie di programmi in Assembly ne volevo sviluppare qualcuno in C da eseguire su MS-DOS.
Esiste qualche versione del compilatore GCC per MS-DOS?