ist wohl die einfachste Variante. Komplizierter wirds mit compiler und linker flags, dafür biete ich dir einfach mein standard-makefile an, bei dem du alle nennenswerten Parameter ändern kannst.
Ich halte das nicht für so schwer. Du rufst den Compiler mit "g++ Dateiname" auf, er erzeugt dann eine Datei namens a.out (den Dateinamen kannst du mit dem Flag "-o Dateiname" ändern). Diese Datei rufst du mit ./a.out auf, dann müsste sie ausgeführt werden. Wenn du das Programm von überall aufrufen willst, musst du es ins Verzeichnis /home/BG/bin kopieren (bzw. mit dem -o Flag direkt dahin kompilieren).
Das mit dem Output verstehe ich nicht, der Compiler erzeugt automatisch ein Binary.
Ich wollte nur wissen was Linux so zum ausführen braucht wie z.B. bei Windows Exe oder bei DOS com...
...
Das ist ein weiterer Vorteil von Linux gegenüber Windoof: es erkennt automatisch am Inhalt der Datei, was sie für einen Typ hat. So kann man die Datei nicht durch Änderung des Namens unbrauchbar machen.
Ein ausführbares Binary ist ein ausführbares Binary, egal wie es heißt. Es braucht keine Endung.
Aber ich habe ja mit meinem Programm eine Terminal-Application. Gibt es nicht irgendein Format das (zumindestens) auf den meisten Linux-Rechnern automatisch im Terminal startet oder gibt es etwas wie die .bat Dateien unter Windows?
Desweiteren wollte ich fragen ob und wie ich übergabe-parameter auslesen kann.
Soll heißen so was wie
ping rpg-ring.com
das ist das rpg-ring.com ja eine übergabe an das programm. Wie bekomm ich das? Hab bei google seltsammerweise nichts besonderes gefunden nur übergabeparameter von funktionen....
Aber ich habe ja mit meinem Programm eine Terminal-Application. Gibt es nicht irgendein Format das (zumindestens) auf den meisten Linux-Rechnern automatisch im Terminal startet oder gibt es etwas wie die .bat Dateien unter Windows?
Desweiteren wollte ich fragen ob und wie ich übergabe-parameter auslesen kann.
Soll heißen so was wie
ping rpg-ring.com
das ist das rpg-ring.com ja eine übergabe an das programm. Wie bekomm ich das? Hab bei google seltsammerweise nichts besonderes gefunden nur übergabeparameter von funktionen....
...
Google mal nach "Shell-Script". Die können sogar deutlich mehr als Batch-Dateien
Wie meinst du das mit der Übergabe? Bei Shell-Scripten kenne ich mich damit nicht aus.
Bei C++ musst du die main()-Funktion anders deklarieren:
int main(int argc, char* argv[])
in argc steht die Anzahl der Argumente, argv ist ein String- (oder besser gesagt char*-) Array, in dem die Argumente stehen. Das erste Argument ist immer der Name des Programms.
Aber ich habe ja mit meinem Programm eine Terminal-Application. Gibt es nicht irgendein Format das (zumindestens) auf den meisten Linux-Rechnern automatisch im Terminal startet oder gibt es etwas wie die .bat Dateien unter Windows?
...
Das Linux-Äquivalent zu Windows-Batchdateien sind Shellskripte, die du in einer Reihe von Sprachen schreiben kannst: Die integrierte bash-Skriptsprache, Perl, PHP, Ruby...
Damit Programme in der Shell laufen mußt du nichts besonderes tun. Einfach schreiben und kompilieren.
Zitat
Desweiteren wollte ich fragen ob und wie ich übergabe-parameter auslesen kann.
Soll heißen so was wie
ping rpg-ring.com
das ist das rpg-ring.com ja eine übergabe an das programm. Wie bekomm ich das? Hab bei google seltsammerweise nichts besonderes gefunden nur übergabeparameter von funktionen....
...
Mach dich mal über die Variablen argc und argv schlau (siehe Post über mir). Und am Besten auch über getopt; das ist eine Bibliothek, mit der du Optionen in der Argumentliste standardisiert parsen kannst.
Hey, Leute ihr habt mir echt geholfen bei meinem 1. C++ Proggy unter Linux
Deshalb hab ich euch mal mit in den Source geschoben...
Entstanden ist aus euren Tipps das Programm Calki, das einen Taschenrechner darstellt:
Man kann es über ./Calki starten, dann fragt es die ganzen Daten (Zahle etc) ab oder man startet es direkt über
./Calki -a 10 -b 11 -c * [Für 10 * 11]
Wenn man es direkt über ./Calki startet fragt es am Ende jeder Berechnung ob eine weitere durchgeführt werden soll. Falls ihr ja sagt, dann wird bei der nächsten Abfrage die Zahl 0 automatisch durch das letzte Ergebis ersetzt.
So, hier ist der Source:
Nennt die Source-Datei 'Calki.cpp' und erstellt noch diese makefile (nenn sie 'makefile')
Jetzt wechsle ins Verzeichnis und führe make [run] aus...
EDIT:
Es gibt seltsammerweise einen Fehler... wenn man das Prog .\Calki -a 10 -b 10 -c * [also überhaupt mit mal] aufruft rechnet er nicht... kA worans liegt...
Edit2:
Habs gelöst... Man muss jetzt aber statt * ein x für mal setzen...
./Calki -a 10 -b 10 -c x
Ausgabe: 10 x 10 = 100
Edit3:
Danke, hab die Datei in .cpp umbenannt und die Make angepasst...
Thx für die Infos
--
Signature.
Geändert von Crash-Override (12.02.2005 um 23:40 Uhr)
Ein kleiner Hinweis noch: Verwende für C++-Code nicht die Dateiendung .c, sonst könnte man denken, daß es sich um C-Code handelt. Übliche Endungen für C++-Code sind .cpp oder .cxx.
Und noch was zum Makefile: Du kannst bei den einzelnen Zielen noch Abhängigkeiten vorgeben. Das sind Dateien, die benötigt werden, um ein bestimmtes Ziel bauen zu können. Wenn eine als Abhängigkeit genannte Datei seit dem letzten Aufruf von make verändert wurde wird das entsprechende Ziel neu gebaut.
Wenn du also für run als Abhängigkeit Calki angibst, dann wird erst das Ziel Calki ausgeführt, befor run durchläuft. Wenn du bei Calki als Abhängigkeit Calki.c angibst, dann wird das Programm nur dann neu gebaut, wenn Calki.c verändert wurde - womit du dir das clean bei all sparen kannst.
Das Makefile sieht dann so aus:
Wenn du jetzt make run eingibst, dann wird erst überprüft, ob die Datei Calki existiert. Wenn sie fehlt oder wenn sie älter ist als Calki.c wird das Programm (neu) kompiliert. Dann wird es ausgeführt.