Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DOS-Quelltexte unter Linux kompilieren?

0 views
Skip to first unread message

Stefan Waizmann

unread,
Feb 20, 1995, 5:24:33 PM2/20/95
to
-=> Quoting Jochen Stein to Stefan Waizmann <=-

> Wenn ich C-Sourcen aus DOS (und auch einige Linux-Sourcen) kompilieren
> will, dann sieht das so aus:

> gcc cda2mes.cpp
> ld: malformed input file (not rel or archive file) cda2mes.cpp

> und das war's dann auch schon. Trotz intensiver Suche habe ich bis
> jetzt keine Loesung gefunden. Ist irgend jemand dieses Problem bekannt?
> Die Loesung auch?

JS> Merke: Vage Problemstellungen erzwingen vage Antworten.

Hi, Jochen!

Danke fuer Deine Antwort, hat aber noch nicht viel geholfen...

Wenn die Frage zu vage war, hier genauer:
Ich habe eine Dosenpartition gemountet und will ein Programm (cda2mes.cpp
in C++), das unter DOS mit Zortech und MSC hervorragend laeuft, auch unter
Linux haben. Wenn ich versuche, das *.cpp-file unter Linux mit gcc zu
kompilieren, kommt obige Fehlermeldung. gcc hat offenbar mit dem Quelltextformat
massive Probleme. Es hat aber die gleichen mod-Flags wie Linux-Quelltexte,
CR/LF-Problem behoben.
Hast Du eine Ahnung? Ich benutze kernel 1.1.54. Bei 0.99xx hatte ich das Problem
nicht!
ld ist doch der Linker, oder? Es entsteht allerdings auch kein Object-file,
wieso beschwert er sich dann?


Merci vielmals,

Stefan

... A clean desk is a sign of a cluttered desk drawer.

Roland Rosenfeld

unread,
Feb 21, 1995, 5:51:21 PM2/21/95
to
Moin Stefan!

Stefan Waizmann (Stefan_...@deds-home.fido.de) wrote:

> > gcc cda2mes.cpp
> > ld: malformed input file (not rel or archive file) cda2mes.cpp

Ich habe das gerade mal ausprobiert, das Problem liegt bei der
Dateiendung ".cpp", welche nicht als C-Code erkannt wird und dann
versucht gcc vermutlich, das File zu linken, obwohl er ja eigentlich
compilieren sollte...

Fuer C-Programme solltest Du eindeutig die Endung ".c" verwenden (das
ist wirklich ein Standard, an dem nichts zu ruetteln ist).

Bei C++-Programmen ist die Endung nicht so eindeutig, aber ".c",
".cc", ".cxx" und ".C" sollten mit den meisten Compilern
funktionieren.

Tschoeeee

Roland

--
* Internet: rol...@spinnaker.rhein.de * Fido: 2:2450/111.13 *

Martin Brennfleck

unread,
Feb 22, 1995, 10:06:07 AM2/22/95
to

Irgendjemand schrieb:
.
.
.
> > Wenn ich C-Sourcen aus DOS (und auch einige Linux-Sourcen) kompilieren
> > will, dann sieht das so aus:
>
> > gcc cda2mes.cpp
> > ld: malformed input file (not rel or archive file) cda2mes.cpp
>
> > und das war's dann auch schon. Trotz intensiver Suche habe ich bis
> > jetzt keine Loesung gefunden. Ist irgend jemand dieses Problem bekannt?
> > Die Loesung auch?

Der gcc gibt alles, was er nicht kennt bei so einem Aufruf an den Linker
ld weiter. Vielleicht kennt er die *.cpp Endung nicht? wer weiss?
Der gcc hat an dem Sourcefile nix gemacht, der Linker beschwet sich
ja ueber cda2mes.cpp .
---
Versuch es mal mit umbenennen in *.cc .

Vielleicht klappts.

Martin Brennflecck

Pierre Mai

unread,
Feb 23, 1995, 2:46:00 PM2/23/95
to
Hi Stefan!

Stefan_...@f660.n2450.z2.fidonet.org (Stefan Waizmann) writes:

> > gcc cda2mes.cpp
> > ld: malformed input file (not rel or archive file) cda2mes.cpp

Ganz einfach: gcc kann mit .cpp Files nix anfangen. C++ files heissen
fuer gcc entweder .cc oder .C (gross- und kleinschreibung beachten!).

Also:

mv cda2mes.cpp cda2mes.cc
gcc -o cda2mes cda2mes.cc -Wall | less

und jetzt kannst du ans Portieren gehen, oder, falls das Programm
wieder erwarten ohne groessere Probs vom gcc compiliert wird solltest
du das Executable unter cda2mes im selben Verzeichnis finden.

Regs, Pierre.


Christof Meerwald

unread,
Feb 24, 1995, 12:22:11 PM2/24/95
to
Hallo Stefan!


> > Wenn ich C-Sourcen aus DOS (und auch einige Linux-Sourcen) kompilieren
> > will, dann sieht das so aus:

> > gcc cda2mes.cpp


> > ld: malformed input file (not rel or archive file) cda2mes.cpp

Die orig-msg sah doch ein bisschen anders aus, oder???

Naja, der gcc erkennt die Extension `.cpp' nicht als C++-Quelltext. Daher
versucht er, die Datei gleich dem Linker zu uebergeben...

Musst ihm entwerder mit `-x c++' sagen, dass es ein C++-Quelltext ist, oder
Du gibts der Datei eine andere Extension (zB `cc', `cxx' oder `C')

Dann kannst nur mehr hoffen, dass das Prog halbwegs portabel programmiert
ist...


bye, Christof

Jochen Stein

unread,
Feb 26, 1995, 6:22:00 AM2/26/95
to
Hallo Stefan,

in LINUX.GER schreibst du


> > gcc cda2mes.cpp
> > ld: malformed input file (not rel or archive file) cda2mes.cpp

> Ich habe eine Dosenpartition gemountet und will ein Programm
> (cda2mes.cpp in C++), das unter DOS mit Zortech und MSC hervorragend
> laeuft, auch unter Linux haben. Wenn ich versuche, das *.cpp-file unter
> Linux mit gcc zu kompilieren, kommt obige Fehlermeldung. gcc hat
> offenbar mit dem Quelltextformat massive Probleme. Es hat aber die
> gleichen mod-Flags wie Linux-Quelltexte, CR/LF-Problem behoben. Hast
> Du eine Ahnung? Ich benutze kernel 1.1.54. Bei 0.99xx hatte ich das
> Problem nicht! ld ist doch der Linker, oder? Es entsteht allerdings
> auch kein Object-file, wieso beschwert er sich dann?

Ok, CR/LF hast du durch LF ersetzt, ich nehme weiter an, dass dein
Programm nichts DOS-spezifisches macht. Versuch mal eins oder mehr der
folgenden:

- g++ -c cda2mes.cpp
- bennenen *.cpp nach *.C um, dann wieder g++ -c ...

Ich vermute, dass der gcc-Driver nicht erkennt, dass du ein C++-File
kompilieren willst und es deshalb direkt dem Linker gibt. In der man-page
vom gcc ist aufgelistet, welche Endungen er fuer welche Dateitypen
standardmaessig benutzt (.C .cc .cxx).

Tschuessle, FClassic: 2:2440/401.6
Jochen FLite: 2:2433/1401.6

0 new messages