Hallo zusammen, ich hab ein kleines C-Programm geschrieben das eine Binärdatei verändern/anpassen soll. Leider liegt die Datei auf einem DOS Rechner und wenn möglich möchte ich das Programm auch dort ausführen und nicht jedesmal die Datei auf ein 32Bit System kopieren. Denn da liegt mein Problem, das kompilieren für ein 32Bit System klappt wunderbar, aber ich bekomm es nicht hin ein 16Bit Binary zu erzeugen. Der Digital Mars C Compiler[0] sollte das laut deren Webseite können, aber ich bin wohl zu blöd dazu das hinzubekommen. Kann mir jemand sagen was ich tun muss um ein DOS Program zu erzeugen? Besten Dank im Voraus P.S. Das Programm ist wirklich winzig und ich verwende nur die <stdio.h> [0]http://www.digitalmars.com/
Gast
#3183797
google liefert http://personal.ee.surrey.ac.uk/Personal/R.Bowden/C/dos-gcc/ keine ahnung ob die links gehen.
Hi Peter, werd das mal versuchen. Dachte eigentlich eher an ein Cross-Compiler, aber wenns nicht anderst geht werd ich eben auf der DOS-Möhre compilieren :/
Gast
#3183802
Elias B. schrieb: > Hi Peter, > > werd das mal versuchen. > Dachte eigentlich eher an ein Cross-Compiler, aber wenns nicht anderst > geht werd ich eben auf der DOS-Möhre compilieren :/ der compiler sollte auch unter Win7 in einer DoxBox laufen. Dann kannst du auch dort compilieren
Gast
#3183803
Du könntest auch OpenWatcom (http://www.openwatcom.org/index.php/Main_Page) oder TurboC (http://edn.embarcadero.com/article/20841) versuchen...
Hi, ich hab mehr oder weniger erfolg gehabt. Virtual Box + DJGPP's GCC haben mir eine exe gebaut die unter DOS läuft. Leider nur auf der Virtualbox wo ich's gebaut hab. Auf der anderen bekomm ich "Load error: no DPMI - Get csdpmi*.zip" Das Zip war Teil der Installation für den GCC von hier: http://personal.ee.surrey.ac.uk/Personal/R.Bowden/C/dos-gcc/ Kann mir jemand sagen wie ich das so compilieren kannd amit das auch läuft wenn das Zip file nicht rum ist? Danke schon mal!
Gast
#3184117
DPMI = Dos Protected Mode Interface http://de.wikipedia.org/wiki/DOS_Protected_Mode_Interface
Gast
#3184131
Du hast doch beim DJGPP einen DPMI-Extender dabei: CWSDPMI
Ja schon, aber ich will nur ne kleine exe die man auf den Zielrechner kopieren kann um sie dann dort zu benutzen. Ohne das man da noch so ein leidigen Extender installieren muss.
Gast
#3184264
Elias B. schrieb: > Ja schon, aber ich will nur ne kleine exe die man auf den Zielrechner > kopieren kann um sie dann dort zu benutzen. Dann besorgst du dir am besten einen echten DOS-Compiler wie Turbo-C, die gibts sogar umsonst. Da die Compiler auch nur Konsolenprogramme sind oder bestenfalls ANSII-Grafik benutzen, sollten sie auch unter Windows laufen, notfalls mit Hilfe von DosBox (dem Programm, nicht der Eingabeaufforderung). Ich habe mir mal vorsichtshalber bei Borland ein Turbo-C 2.01 von 1989 runtergeladen, und Borland C mit 1m Handbuch und auf ca. 30 Disketten hatte ich auch mal, aber die habe ich glaube ich entsorgt. Gruss Reinhard
Hi, hab den Borland C Compiler 2.01 heruntergeladen und installiert. Leider bekomm ich einen haufen Fehler wenn ich compilieren will :/ Weisst du welchen C Standart damals benutzt wurde, bzw wo man handbüch herbekommen könnte?
Gast
#3184324
> Ohne das man da noch so ein leidigen Extender installieren muss.
Das ist doch auch nur eine .exe
Gast
#3184349
Elias B. schrieb: > Weisst du welchen C Standart damals benutzt wurde, bzw wo man handbüch > herbekommen könnte? Such mal nach Kernighan & Ritchie, dem Urahn aller C-Bücher. Da steht sicher nichts zu Modernes drin. Bei Google gefunden: http://de.scribd.com/doc/35398818/Turbo-C-Users-Guide-1987 Gruss Reinhard
Gast
#3184357
Elias B. schrieb: > Leider bekomm ich einen haufen Fehler wenn ich compilieren will :/ zeig doch mal ein paar der melden. Vermutlich sind nicht alles variablen als erstes in der funktion deklariert.
Gast
#3184387
Elias B. schrieb: > Weisst du welchen C Standart damals benutzt wurde. ... Einer mit einem weiche "t" ;-)
Gast
#3184388
@Elias Ich habe bei mir "D-Fend Reloaded" laufen (Fenster 7). Ein paar olle 16-Bit-Clipperanwendungen joggen da problemlos. Warum nicht ein betagter C-Compiler? Dazu installierst Du dir noch 'nen Notepad++-Editor oder was ähnliches und so kannst Du halbwegs komfortabel, unter Fenster, arbeiten. Die meisten Compiler sind ja sowieso Kommandozeilenorientiert.
Gast
#3184391
Irgend einen Uralt-Compiler, und den unter DOSbox laufen lassen. So bekam ich vor kurzem meinen Uralt-Assembler mit Simulator von 1991 auch wieder zum laufen. Gestern noch einen neuen 8048-Simulator mit Assembler für meine über 30 Jahre alten Retro-Bausteine. Alles auf meinem Vista-Notebook. Bei einem alten Turbo-C-Compiler gab es ein Einstellungsmenü. Darin konnte man einstellen, ob das Programm auf einem 8086 oder 80286 oder 80386 laufen sollte, und ob mit oder ohne Coprozessor. Die Coprozessoren hießen immer xx87.
Gast
#3184461
@Elias
>Leider bekomm ich einen haufen Fehler wenn ich compilieren will
Das was heute vor dem Anwender versteckt wird, musst Du meist zu Fuß
erledigen.
So ein Compiler benötigt einen ganzen Sack voll Umgebungsvariablen um
sich im System auszukennen.
So zum Bleistift: Wo sind die Bibliotheken, wo sind die
Standart-Header-Files?
Früher hat man das in eine Batch-Datei gepackt, die einmalig aufgerufen
wurde oder im Systemautomatismus versteckt war.
Also jede Menge: SET …
Elias B. schrieb: > Der Digital Mars C Compiler[0] sollte das laut deren Webseite können, > aber ich bin wohl zu blöd dazu das hinzubekommen. dmc -msd program.c
amateur schrieb: > So ein Compiler benötigt einen ganzen Sack voll Umgebungsvariablen um > sich im System auszukennen. Setzt DMC alles selber, ausgehend von seinem EXE-Pfad.
Gast
#3184634
@Elias An der Stelle, an der Du z.B. "dmc -msd program.c" eingeben würdest, einfach mal den Befehl "set" eingeben. Dann werden die aktuellen Einstellungen ausgegeben.
Wenn DMC nicht schon im Pfad drin ist, dann in der Kommandozeile vorher: path c:\dm\bin;%path% Mal angenommen, dass du den Kram nach c:\dm entpackt hast. Mehr ist eigentlich nicht nötig.
Gast
#3184642
Hallo Elias, probier es mal mit TURBO C++ V. 1.01 http://edn.embarcadero.com/museum/antiquesoftware Ob Du es unter Win7/8 noch zum Laufen bekommst, weiß ich nicht. Aber für Windows XP sollte es noch funktionieren. Im Zweifel kannst Du ja auch den Quelltext Deines Mini-Programms posten, und jemand aus dem Forum versucht, es zu kompilieren. Viele Grüße Michael
Gast
#3184675
Elias B. schrieb: > Leider bekomm ich einen haufen Fehler wenn ich compilieren will Welche Fehler bekommst du denn?
Gast
#3184729
Zäumen wir das Pferd mal von hinten auf: warum nicht eine andere DOS-Version verwenden? :P Bootdiskette mit z.B. Freedos und einem passenden Extender (siehe auch Wikipedia zu FreeDOS)... Sofern der Rechner von CD booten kann, kannst du auch alles auf eine CD-RW kloppen.
Gast
#3184816
Michael Lenz (hochbett) schrieb: > Hallo Elias, > probier es mal mit TURBO C++ V. 1.01 > http://edn.embarcadero.com/museum/antiquesoftware Die rücken doch nichts raus ohne Registrierung (nicht mal Uralt-Software). Wahrscheinlich geben sie in 100 Jahren mal TC 3.0 frei. Man findet im Netz zwar grundsätzlich alles wonach man zeitaufwändig sucht, aber leider meistens aus unseriösen Quellen, die einem erst mal eine unbekannte EXE zum Dl anbieten. Vorsicht Virenschleuder! Aber schau mal hier http://www.retroarchive.org/dos/lang/index.html
Adler schrieb: > Die rücken doch nichts raus ohne Registrierung (nicht mal > Uralt-Software). Wahrscheinlich geben sie in 100 Jahren mal TC 3.0 frei. Vielleicht hat der eine oder andere die Floppies noch nicht entsorgt. Dann verlagert sich das Problem darauf, 5,25" Floppies zu lesen. ;-)
Gast
#3184837
A. K. (prx) schrieb: Adler schrieb: >> Die rücken doch nichts raus ohne Registrierung (nicht mal >> Uralt-Software). Wahrscheinlich geben sie in 100 Jahren mal TC 3.0 frei. > Vielleicht hat der eine oder andere die Floppies noch nicht entsorgt. > Dann verlagert sich das Problem darauf, 5,25" Floppies zu lesen. ;-) Also mein Borland Turbo C++ 3.0 ist auf 3,5" Diskette (wo hab ich die verdammten Dinger eigentlich??). Das 5,25" kann also beruhigt weiter in der Ablage vor sich stauben. ;-) Die alten Versionen zu installieren kann dennoch etwas hakelig sein. Ich meine aber alles in ein Verzeichnis kopiert (Disk1) sollte es gehen. Oder man nimmt einfach seinen alten TC Ordner (der irgendwo auf einer Uralt-CD gezippt archiviert wurde anno irgendwann) und probierts damit in der DOS-Box. Dann braucht man nix groß zu installieren. Wobei du doch weiter oben selber geschrieben hast, wie es mit dem DMC auch klappen sollte.
Gast
#3184839
Adler schrieb: > Die rücken doch nichts raus ohne Registrierung (nicht mal > Uralt-Software). Ja und, die Registrierung ist kostenfrei. Und einem geschenkten Gaul ...
Guten Morgen, also Danke erst mal für die Zahlreichen Antworten! das ist der code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
und das der output com Borland Compiler:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
Vielleicht wird ja einer schlau draus !?
Problemlos (-v2 damit du auch was davon siehst):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
XP, also ausführbar:
1 | |
2 | |
Offensichtlich ignoriert dein Turbo-C das Include-Statement, oder kriegt ein effektiv leeres stdio.h. Der Rest folgt daraus. Vielleicht fehlt ihm irgendeine Env-Variable, die in DOS vorhanden aber in Windows nicht vorhanden ist (sowas wie #ifdef DOS ... im stdio.h).
Elias B. schrieb: > #include <stdio.h> ... > Error BIN.C 5: Undefined symbol 'FILE' in function main Komisch. In der zu TC2.01 gehörenden /stdio.h/ ist FILE definiert. Sicher, daß bei Dir der include-Pfad korrekt gesetzt ist?
Wenn er das File nicht gefunden hätte, hätte er es gesagt. Die Frage ist also eher, ob er das richtige File gefunden hat, oder dessen Inhalt aufgrund einer abgewiesenen #ifdef Klammer ignorierte.
Gast
#3186535
Elias B. schrieb: > Guten Morgen, > > also Danke erst mal für die Zahlreichen Antworten! > > das ist der code: > > [c] > #include <stdio.h> > ... > und das der output com Borland Compiler: > > [c] > Turbo C Version 2.01 Copyright (c) 1987, 1988 Borland International > BIN.C: > Error BIN.C 5: Undefined symbol 'FILE' in function main > Error BIN.C 5: Undefined symbol 'file' in function main > Warning BIN.C 5: Code has no effect in function main > ... > > Vielleicht wird ja einer schlau draus !? Änder mal deine C++ Kommentare // (die gab es damals nämlich noch nicht für C) in C89 Kommentare /* */, dann kompiliert das auch.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
