PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dev-C++ Problem: Linken schlägt fehl...


liquid
2003-03-27, 14:44:25
Dev-C++ führt die Kompilation (genauer gesagt den Link-Vorgang) nach dem letzten Hinzufügen von Project-Dateien nicht mehr aus.

Der Log gibt folgendes aus:
Bad command or file name
Execution terminated
Compilation successful

Das die ganze Sache erfolgreich war, wie mir die letzte Zeile weismachen will, ist natürlich kompletter Schwachsinn.

Auch ist die g++.exe auf jeden Fall vorhanden, deshalb vermute ich mal schwer, dass das Problem in der Länge der Kommandaozeile begründet liegt, die jetzt durch das Zufügen von neuen CPPs über den erlaubten Bereich gewachsen ist. In der Tat ist die Zeile doch recht lang, aber meine Projektordnung will ich nun auch nicht aufgeben, indem ich Dateien einfach merge.

Nur wie mache ich es der Kommandozeile jetzt verständlich, dass sie die Länge der Kommandos vergrößern soll. Geht das überhaupt und wenn ja, wie kann ich es bewerkstelligen. Ich habe auch schon über CygnusWin die Makefile ausgeführt und das mit Erfolg, schließlich ist UNIX ja auch auf extrem lange Befehlsketten eingerichtet und macht nicht gleich schlapp, wenn es mal etwas größer wird.

Irgendjemand eine Idee, denn ich habe ehrlich gesagt keine Lust die gesamte IDE zu wechseln, nur wegen so einer popeligen Sache.

cya
liquid

zeckensack
2003-03-27, 15:18:45
Laß mich mal raten, die Zeile die da mit 'bad command or file name' scheitert beginnt nicht zufällig mit "rm"? :bäh:

Da war wohl ein doofer Bug, mach mal ein Update (Tools => Check for Updates/Packages; Dev schließen [EXE muß überschrieben werden]; loslegen). Seit gestern oder so gibt's Version 4.9.8.0 =)

Noch ein beliebtes Problem sind lange Dateinamen mit Leerzeichen drin. Du solltest DevCPP im Default-Verzeichnis C:\Dev-CPP\ installiert haben, oder zumindest in einem Pfad der komplett frei von Leerzeichen ist.

Ansonsten fällt mir nichts ein. Poste doch mal das komplette Compile-Log (Rechtsklick auf den Log-Bereich ...).

liquid
2003-03-27, 15:45:32
Originally posted by zeckensack
Laß mich mal raten, die Zeile die da mit 'bad command or file name' scheitert beginnt nicht zufällig mit "rm"? :bäh:
Habe ich nicht ausdrücklich geschrieben, dass er beim LINKEN (LINKEN!!) den Fehler meldet. Also nix mit remove, etc. - den Fehler kenn ich außerdem schon ewig.

Originally posted by zeckensack
Da war wohl ein doofer Bug, mach mal ein Update (Tools => Check for Updates/Packages; Dev schließen [EXE muß überschrieben werden]; loslegen). Seit gestern oder so gibt's Version 4.9.8.0 =)
Was meinst du wohl welche Version ich hier habe? :|

Originally posted by zeckensack
Noch ein beliebtes Problem sind lange Dateinamen mit Leerzeichen drin. Du solltest DevCPP im Default-Verzeichnis C:\Dev-CPP\ installiert haben, oder zumindest in einem Pfad der komplett frei von Leerzeichen ist.
Mir ist durchaus bewusst, dass Win so seine Probleme mit Leerzeichen hat, deshalb gibt es in meinem Coding Verzeichnis auch absolut keine Leerzeichen.

Originally posted by zeckensack Ansonsten fällt mir nichts ein. Poste doch mal das komplette Compile-Log (Rechtsklick auf den Log-Bereich ...).
Ich komm mir irgendwie ein wenig verarscht vor. Ich habe doch eigentlich klargemacht wo der Fehler genau sitzt und jetzt werden mir irgendwelche anderen Lösungsvorschläge genannt, die nun absolut nichts mit dem Problem zu tun haben.
Log (ich weiß schon wie man Text kopiert ;)):

Compiler: Default compiler
Building Makefile: "C:\CoreDev\Projects\oglEngine\Makefile.win"
Executing make...
make.exe -f "C:\CoreDev\Projects\oglEngine\Makefile.win" all
g++.exe -D__DEBUG__ -c main.cpp -o main.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c error.cpp -o error.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c app.cpp -o app.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/linked_vector.cpp -o extended_objects/linked_vector.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_brush.cpp -o basic_objects/basic_brush.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_color.cpp -o basic_objects/basic_color.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_curve.cpp -o basic_objects/basic_curve.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_matrix3.cpp -o basic_objects/basic_matrix3.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_plane.cpp -o basic_objects/basic_plane.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_quad.cpp -o basic_objects/basic_quad.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_ray.cpp -o basic_objects/basic_ray.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_tri.cpp -o basic_objects/basic_tri.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_vector.cpp -o basic_objects/basic_vector.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_vertex.cpp -o basic_objects/basic_vertex.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_scene.cpp -o basic_objects/basic_scene.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/brush_scene.cpp -o extended_objects/brush_scene.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_terrain.cpp -o basic_objects/basic_terrain.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c fileLoader.cpp -o fileLoader.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c ogl_core.cpp -o ogl_core.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_quaternion.cpp -o basic_objects/basic_quaternion.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_matrix4.cpp -o basic_objects/basic_matrix4.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_vector4.cpp -o basic_objects/basic_vector4.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_camera.cpp -o basic_objects/basic_camera.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c md2Loader.cpp -o md2Loader.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/md2Model.cpp -o basic_objects/md2Model.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_texCoord.cpp -o basic_objects/basic_texCoord.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/ext_particle.cpp -o extended_objects/ext_particle.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c basic_objects/basic_model.cpp -o basic_objects/basic_model.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c special.cpp -o special.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/texture_object.cpp -o extended_objects/texture_object.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/texture_manager.cpp -o extended_objects/texture_manager.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ -c extended_objects/extension_manager.cpp -o extended_objects/extension_manager.o -I"C:/COREDEV/DEV-CPP/include/c++" -I"C:/COREDEV/DEV-CPP/include/c++/mingw32" -I"C:/COREDEV/DEV-CPP/include/c++/backward" -I"C:/COREDEV/DEV-CPP/include" -g3

g++.exe -D__DEBUG__ main.o error.o app.o extended_objects/linked_vector.o basic_objects/basic_brush.o basic_objects/basic_color.o basic_objects/basic_curve.o basic_objects/basic_matrix3.o basic_objects/basic_plane.o basic_objects/basic_quad.o basic_objects/basic_ray.o basic_objects/basic_tri.o basic_objects/basic_vector.o basic_objects/basic_vertex.o basic_objects/basic_scene.o extended_objects/brush_scene.o basic_objects/basic_terrain.o fileLoader.o ogl_core.o basic_objects/basic_quaternion.o basic_objects/basic_matrix4.o basic_objects/basic_vector4.o basic_objects/basic_camera.o md2Loader.o basic_objects/md2Model.o basic_objects/basic_texCoord.o extended_objects/ext_particle.o basic_objects/basic_model.o special.o extended_objects/texture_object.o extended_objects/texture_manager.o extended_objects/extension_manager.o -o "oglEngine.exe" -L"C:/COREDEV/DEV-CPP/lib" -lmingw32 -lsdlmain -liberty -lsdl -lopengl32 -lglu32

Bad command or file name

Execution terminated
Compilation successful

cya
liquid

Unregistered
2003-03-27, 23:11:01
Sei net so schnippig bzw. arrogant, er wollte dir nur helfen.

Der Fehler hier liegt am Kommandozeileninterpreter von deinem Betriebssystem und zwar werden afaik die Calls der Tools über die beim OS registrierten Shell(?) ausgeführt, dürfte hier wohl command.com (?) sein.

Der Linker Call mit den zich Object-Files is' da einfach zu lang.
Warum die Restriktion besteht weiss ich net, da z.B. bei CreateProcess der lpCommandLine keinerlei solche Begrenzungen kennt,aber das nur nebenbei.
Hatte dieses Problem mit dem Quake 1 Source und auch mit dem AvP2 Source.
Was da hilft ist cygwin zu installieren, die scheinen automatisch die sh.exe als shell zu registrieren oder halt nur die sh.exe aus den msys-tools bzw. cygwin zu nehmen und per Hand zu registrieren.
Bei mir half da ein shell=<pfad_zur_sh.exe-inkl_sh.exe> in die config.sys einzufügen.
Mittlerweile habe ich aber ein einfaches cygwin installiert, was bisher anstandslos funktioniert.

Unregistered
2003-03-28, 10:52:34
Ja man, lass Zecki in Ruhe, der weiß schon wie er dir helfen kann

zeckensack
2003-03-28, 11:23:52
Genau, ich wollte nur versuchen zu helfen :(
Ich kann ja nun nicht alles wissen, ich wollte lediglich 'häufige' Fehler schonmal ausschließen.
Originally posted by zeckensack
Ansonsten fällt mir nichts ein.

liquid
2003-03-28, 12:47:40
Ich glaube ich muss mich erstmal entschuldigen, dass ich so heftig reagiert habe. Das war mit Sicherheit nicht in Ordnung.
Nur habe ich die ganze Zeit im Netz nach Problemlösungsmöglichkeiten gesucht, aber absolut keinen Anhaltspunkt gefunden, dass jemand anderes dieses Problem auch mit dem Dev-C++ hat. Das frustriert ganz schön, wenn man ein so hervorragendes Programm wie den Dev nicht nutzen kann, nur weil MS zu doof ist einen Kommandozeileninterpreter mitzuliefern, der keine solchen Limits aufweist.

Das alles legitimiert meinen "Ausbruch" natürlich nicht, deshalb will ich mich noch einmal ganz besonders bei zeckensack entschuldigen und natürlich auch bedanken, gerade für die Hilfestellung, die er mir gegeben hat. Ich hoffe dass du mir da nochmal verzeihen kannst, denn sonst reagiere ich eigentlich nicht so wie es hier geschehen ist.

Und letztendlich noch ein herzliches Danke für den Tipp mit dem Wechseln des Kommandozeileninterpreters, das werde ich sofort einmal ausprobieren.
Und auch wenn es auch doof klingen mag, es tut mir leid... ;(

Unregistered
2003-04-06, 15:57:45
Also, was ich da oben beschrieben habe, warum das Linken fehlschlägt, ist soweit korrekt, nur wie man dieses Problem löst, ist falsch, sorry. :(
Ich hatte nämlich ein kleines Plattenproblem und musste daher neu installieren und musste feststellen, dass dies nämlich net so ganz klappt, aber egal, nun weiss ich zumindest sicher, wie man das Problem löst.
Und zwar sucht eines der Tools, die in den Kompalierungsprozess mit einbezogen sind nach der sh.exe in allen dem System bekannten Pfaden, falls keine sh.exe gefunden wird, wird automatisch die Standard-Shell genommen, die wiederum aber alle zu langen Kommandozeilen verstümmelt. :D
Also einfach gesagt eine funktionierende sh.exe auf die Platte schieben den Pfad zu dieser sh.exe in der autoexec.bat angeben (set path= ).
Getestet habe ich es mit der cygwin und der msys sh.exe funktionieren beide tadellos, auch bei riesigen Kommandozeilen.

liquid
2003-04-06, 21:30:25
Hmm, also wenn ich das jetzt richtig verstanden habe, dann suchen Teile des Compiler-Paketes nach der sh.exe, um sie für die Übergabe der Kommandozeile zu benutzen. Richtig?

Ich hab es jetzt so gemacht, dass ich die COMSPEC Variable in der autoexec.bat auf die MSYS sh.exe gesetzt habe. Das klappt auch im Dev-C++ sehr gut, allerdings kann ich jetzt keine BAT-Dateien mehr ausführen, geschweigen denn die Kommandozeile so aufrufen (ein command in Start|Ausführen gibt nur einen Error aus). Ein Setzen der SHELL Variable brachte bei mir allerdings überhaupt nichts. Ich glaube Win98SE übersieht diesen Eintrag auch, weil er in der config.sys steht.

Ich werde es aber jedenfalls noch einmal probieren, einfach die sh.exe in den Suchpfad einzugliedern, vielleicht funktioniert dann sowohl der Dev-C++ als auch die BAT-Dateien richtig.

cya
liquid

EDIT - Nachtrag: Ich habe es heute mal getestet, das Setzen der COMSPEC Variable aus der autoexec.bat entfernt und den MSYS/bin Pfad in PATH eingetragen. Und so wie es aussieht funktioniert das tadellos. Thx@All, die zur Lösung des Problems beigetragen haben!

Unregistered
2003-04-09, 11:25:37
Originally posted by liquid
Hmm, also wenn ich das jetzt richtig verstanden habe, dann suchen Teile des Compiler-Paketes nach der sh.exe, um sie für die Übergabe der Kommandozeile zu benutzen. Richtig?[...]

Richtig, ich persönlich denke, dass make.exe nach einer sh.exe in den Pfaden sucht.