Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   GCC und zu langer Aufruf (https://www.delphipraxis.net/97324-gcc-und-zu-langer-aufruf.html)

Nils_13 8. Aug 2007 16:26


GCC und zu langer Aufruf
 
Hi,

ich arbeite schon seit einiger Zeit an einer kleinen IDE für Linux/Windows, die übersichtlich sein soll und Projektdateien verwalten kann. Wenn ich ein Projekt (mein kleines OS) hernehme und soweit alles eingestellt habe, wird der Aufruf allerdings viel zu lang:
Zitat:

gcc -g -c -Wall -fleading-underscore -Wall -ffreestanding -nostdlib -fno-builtin -nostdinc -I /mnt/datene/13/Source/asm/start.asm /mnt/datene/13/Source/asm/isrs.asm /mnt/datene/13/Source/asm/irq.asm /mnt/datene/13/Source/include/grub.h /mnt/datene/13/Source/include/types.h /mnt/datene/13/Source/include/timer.h /mnt/datene/13/Source/include/stdlib.h /mnt/datene/13/Source/include/multiboot.h /mnt/datene/13/Source/include/languages.h /mnt/datene/13/Source/include/keyboardinput.h /mnt/datene/13/Source/include/keyboard.h /mnt/datene/13/Source/include/kernel.h /mnt/datene/13/Source/include/isrs.h usw.
Man könnte einfach cd ausführen (geht zum Glück sogar bei beiden Systemen :)) und somit schon viele Pfadangaben sparen, aber das wäre keine Lösung, da es dann bei gewissen Projekten dennoch viel zu lang werden könnte. Kann der GCC Indexdateien (eine Datei, die alle Dateipfade beinhaltet und vom Compiler auseinandergenommen wird; konnte ich über Google nicht rausfinden) oder gibt es eine andere Lösung ?

Ein Beweis dafür, dass es geht ist z.B. CodeBlocks.

Der_Unwissende 8. Aug 2007 16:43

Re: GCC und zu langer Aufruf
 
Hi,
der Schalter -I wird bei der GCC nicht dazu benutzt eine einzelne Datei sondern ein Verzeichnis einzubinden, alle Dateien die direkt in diesem Verzeichnis liegen werden damit automatisch berücksichtigt!

Gruß Der Unwisssende

Nils_13 8. Aug 2007 16:44

Re: GCC und zu langer Aufruf
 
Ok, aber mal abgesehen davon, hat ein Terminal eine 255er Zeichenbeschränkung.

Der_Unwissende 8. Aug 2007 16:46

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von Nils_13
Ok, aber mal abgesehen davon, hat ein Terminal eine 255er Zeichenbeschränkung.

Aha.

Nils_13 8. Aug 2007 16:47

Re: GCC und zu langer Aufruf
 
Würde ich -I weglassen, würde schonmal soweit alles stimmen, allerdings zu lang sein, da das weniger als die Hälfte von der gesamten Zeile ist.

Der_Unwissende 8. Aug 2007 16:54

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von Nils_13
Würde ich -I weglassen, würde schonmal soweit alles stimmen, allerdings zu lang sein, da das weniger als die Hälfte von der gesamten Zeile ist.

Ok, aber Du kannst auch einfach mit der -c Option jede Datei einzeln übersetzen. Klar, ist der Pfad dann länger als 255 Zeichen hast Du ein Problem (vorallem weil Du weil Du einen solch langen Pfad wählst!). Was die Beschränkung auf 255 Zeichen angeht, von wessen Terminal sprichst Du? Windows? Oder ein Unix-Derivat? Sollte LEtzteres der Fall sein, welche Shell? Oder gilt die Beschränkung überall?

DGL-luke 8. Aug 2007 16:55

Re: GCC und zu langer Aufruf
 
Vorschlag:

Code:
gcc < cmdline.txt REM gcc aufrufen mit input aus cmdline.txt
Müsst unter Windows funzen, obs die Linux-Bash anders macht weiß ich nicht.

EDIT: äh, ne, das füttert das file nur als std-input rein. :gruebel: irgendwas muss es doch da geben.

Der_Unwissende 8. Aug 2007 17:19

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von DGL-luke
Müsst unter Windows funzen, obs die Linux-Bash anders macht weiß ich nicht.

EDIT: äh, ne, das füttert das file nur als std-input rein. :gruebel: irgendwas muss es doch da geben.

Unter Linux würde man wohl am ehesten etwas wie
Code:
gcc -c -... `cat cmdline.txt`
verwenden, das würde die Ausgabe von cat cmdline.txt (eben der Inhalt der Datei, durch cat gelesen) als Eingabe von gcc -c verwenden, aber da wäre dann schon die Frage, ob ein makefile nicht das gleiche leisten würde und ob es überhaupt diese Beschränkung auf 255 Zeichen gibt.

Nils_13 8. Aug 2007 17:25

Re: GCC und zu langer Aufruf
 
Ich erhielt vorhin eine Exception, die mir sagte, der String wäre leer, da ich so etwas vom eigenen System kenne :mrgreen:, würde ich sagen, dass der Buffer geleert wurde.

Dax 8. Aug 2007 17:26

Re: GCC und zu langer Aufruf
 
Code:
cat args.txt | xargs -0 gcc
Das wirft jede Zeile der Textdatei separat auf den gcc. Aber Achtung: hinter der letzten Zeile darf kein \n stehen, was aber standardmäßig der Fall ist.

Chewie 8. Aug 2007 17:46

Re: GCC und zu langer Aufruf
 
Was spricht denn gegen ein Makefile?

Muetze1 8. Aug 2007 18:25

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von Chewie
Was spricht denn gegen ein Makefile?

Ergänzung: dieses kann mit sonderlich langen Angaben ohne Probleme umgehen. Makefile ist auch in anderer Hinsicht sehr empfehlenswert, von daher klare Empfehlung: Makefile anlegen

Nils_13 8. Aug 2007 18:51

Re: GCC und zu langer Aufruf
 
Ok, wie erstellt man ein Makefile, dass unter Linux und Windows läuft ?

Man kann an den letzten 4 Wörtern sehr gut sehen, was gerade läuft, vgl. mit der Umgekehrten schreibweise, wenn ich mit dem anderen System unterwegs bin *g*

Chewie 8. Aug 2007 19:16

Re: GCC und zu langer Aufruf
 
Wenn du die gleichen Tools zum Bauen unter Linux wie auch unter Windows nutzt und nur relative Pfade verwendest, sollte es da eigentlich keinen Unterschied geben.

Nils_13 8. Aug 2007 19:20

Re: GCC und zu langer Aufruf
 
Unter Linux ist es make, wie heißt es denn für Windows ?

hoika 8. Aug 2007 19:26

Re: GCC und zu langer Aufruf
 
Nimm cygwin und dann heisst es auch make ;)


Heiko

Nils_13 8. Aug 2007 21:32

Re: GCC und zu langer Aufruf
 
Ok, aber ich habe mein Programm bis jetzt so entwickelt, dass man die Compiler und sonstiges frei wählen kann und deshalb die Frage: ist die Syntax der Makefiles in irgendeiner Hinsicht unterschiedlich (das müsste ich nämlich beachten) ?

Der_Unwissende 8. Aug 2007 21:32

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von hoika
Nimm cygwin und dann heisst es auch make ;)

Für MinGw gilt das Gleiche (die haben nebenbei auch keine Probleme mit mehr als 255 Zeichen im Befehl).

Nils_13 8. Aug 2007 21:53

Re: GCC und zu langer Aufruf
 
Ok, dann ein herzliches Dankeschön für eure Hilfe :)

Der_Unwissende 8. Aug 2007 22:02

Re: GCC und zu langer Aufruf
 
Zitat:

Zitat von Nils_13
Ok, aber ich habe mein Programm bis jetzt so entwickelt, dass man die Compiler und sonstiges frei wählen kann und deshalb die Frage: ist die Syntax der Makefiles in irgendeiner Hinsicht unterschiedlich (das müsste ich nämlich beachten) ?

Na wenn Du das gleiche make verwendest (eben GNU make), dann ist auch die Syntax gleich. Willst Du hingegen auch den Borland oder MS C-Compiler unterstützen, musst Du auf die Borland-Syntax oder nmake zurück greifen. An sich wird aber häufig von einer Unix-artigen Umgebung ausgegangen (Windows Benutzer müssen dann eben Cygwin oder MinGw verwenden), dort kannst Du dann über ein configure-skript sogar das makefile dyn. erstellen lassen (so, dass der Compiler und die benötigten Optionen/Schalter auf dem Zielsystem ermittelt werden). Sicherlich ist autoconf dabei ein tolles Stichwort, hat aber auch interessante Eigenheiten, um es mal so zu sagen.

hoika 8. Aug 2007 22:06

Re: GCC und zu langer Aufruf
 
Hallo,

beim Borland Make ist es noch viel schlimmer,
bestimmte Sachen gehen gar nicht, z.B.

$<


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz