C-Programme ausführen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
zest
Beiträge: 13
Registriert: 19.06.2004 13:52:17

C-Programme ausführen

Beitrag von zest » 05.08.2004 14:44:33

Hi,

ich will C lernen und habe jetzt schon ein paar kleine Anfängerprogramme geschrieben. Ich kompiliere die immer mit gcc auf der Konsole. Wenn ich das Programm dann ausführen will muss ich immer den ganzen Pfad angeben, obwohl ich unter der Konsole in dem Pfad bin.
Ist es nicht eigentlich normal, dass man Programme, wenn man in ihrem eigentlichen Verzeichnis ist, da auch ausführen kann? Wie kann ich es einstellen, dass Programme direkt, ohne Pfadangabe ausgeführt werden?

Vielen Dank schon einmal im Vorraus

Gruß
zest

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 05.08.2004 14:46:26

einfach

Code: Alles auswählen

./programm
geht auch.
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
zest
Beiträge: 13
Registriert: 19.06.2004 13:52:17

Beitrag von zest » 05.08.2004 14:52:18

Ah danke das hilft schon mal weiter, aber einen Weg, dass man nur "porgramm" angibt gibt es nicht?

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 05.08.2004 14:54:19

Doch, aber der ist nicht zu empfehlen. Du kannst den aktuellen Pfad zu der Umgebungsvariable PATH hinzufügen. Aber das wird aus Sicherheitsgründen nicht gemacht (es kann einem ein anderes Programm untergeschoben werden)


Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 05.08.2004 15:21:15

Wenn du das Programm nach /usr/local/bin kopierst funktionierts natürlich. Alternativ kannst du dort auch ein Startscript hintun:

/usr/local/bin/meinprogramm:

Code: Alles auswählen

#!/bin/sh
/home/derUser/programme/meinprogramm/meinprogramm
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Franknborder
Beiträge: 17
Registriert: 08.08.2004 14:15:29

Beitrag von Franknborder » 08.08.2004 14:37:58

Hallo,.. :D

habe ich das richtig verstanden, Du schreibst ein Programm, speicherst es ab in Deinem Verzeichnis, z.B. /Franknborder/C_Programme/test.cpp.
Bist mit Deinem Terminal in genau diesem Verzeichnis und Du kannst nicht mit
g++ test.cpp -o test dein Programm kompilieren, sondern müsstest dann
den kompletten Pfad nochmals eingeben ? Schreib mal bitte was Du da eingibst um zu kompilieren....wenn du im Verzeichnis "bist", solltest Du darin auch nicht mehr den kompletten Pfad angeben müssen, das wäre ja hirnrissig ! Hier schau mal

http://wwwuser.gwdg.de/~kboehm/ebook/inhalt.html

nur zum reinschnuppern, die Codes sind für einen Beginner zu schwer, und schau hier http://www.c-plusplus.de . Ich hoffe es hilft Dir weiter.


Gruß

Franknborder

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 09.08.2004 12:29:44

Franknborder hat geschrieben:Schreib mal bitte was Du da eingibst um zu kompilieren....wenn du im Verzeichnis "bist", solltest Du darin auch nicht mehr den kompletten Pfad angeben müssen, das wäre ja hirnrissig !
Das ist nicht hirnrissig, man muss Unix sagen, dass man die Datei im aktuellen Verzeichnis meint. Das aktuelle Verzeichnis kann man jedoch immer mit "." beschreiben, so dass ein "./programm" immer reicht. Man kann - wie schon erwähnt, mittels "PATH=$PATH:." das aktuelle Verzeichnis standardmäßig auch durchsuchen lassen (SuSE macht das z.B.), ist aber nicht zu empfehlen.

Man denke nur an die möglichkeit, dass jemand ein skript mit dem inhalt "rm -rf ~" in den Homeverzeichnis unter dem Namen "ls" packt. (Natürlich wird meistens das aktuelle Verzeichnis als letztes durchsucht, in diesem Fall würde es also nicht ausgeführt. Besser ist es, das Programm "sl" zu nennen, dann wird es ausgeführt, wenn sich der Benutzer vertippt.)

Es gibt übrigens ein Programm namens test, wenn man sein Programm auch so nennt, sollte man immer "./test" schreiben, da ansonsten das andere ausgeführt würde.

Franknborder
Beiträge: 17
Registriert: 08.08.2004 14:15:29

Beitrag von Franknborder » 09.08.2004 13:35:51

Hallo,...

wie Du sicher an der Zahl meiner Beiträge erkennen kannst bin ich Neewb wie man so schön sagt, zumindest was Linux betrifft, also ich habe meine in C /C++ geschriebenen Programme (Tutor Übungen), in einem eigenen Ordner gespeichert.
Wenn ich nun ein Terminal öffne, mich dann in mein Verzeichnis begebe z.B. cd/eigene/C_Progs, dann kann ich jedes Programm von da aus auch ausführen (Suse 9.0) ich bekomme die Tage Debian Sid. Wenn ich ein Programm editiere, mach ich mit Kate, dann speicher ich das auch im besagten Verzeichnis. Öffne ich jetzt ein Terminal, egal ob in Kate oder einer X beliebigen anderen "Stelle", editiere ich mich wieder ins besagte Verzeichnis also z.B. cd/eigene/C_Progs und kann dann z.B mit g++ -Wall -ggdb -Test.cpp -o Test (es könnte auch Textadventure.cpp heissen oder egal.cpp) und das Teil ist kompiliert ! Ausführen tu ich das Programm natürlich mit ./Test, bzw. dem Objektnamen dem ich dem Programm zugewiesen habe -o wieauchimmer.
Ich hatte das ganze jetzt so verstanden das wenn Zest im besagtenVerzeichnis ist, er den kompletten Pfad mit in den Compilierungsaufruf mit einbauen muss ! Korrigiere mich wenn dem nicht so ist, deshalb fragte ich auch ob ich das ganze richtig Verstanden habe. Deine Bedenken kann ich verstehen auch wenn ich nicht genau weiß auf was der rm (remove?) Befehl abzielt, wie gesagt Neewb, eben, ansonsten könnte es natürlich verheerend sein, wenn ich einen Makro definiere bzw. hier in Linux einen alias definiere, den fest abspeichere und auf evtl Tippfehler spekuliere, oder wie auch immer,.....Ich muss mich selbst erst mal durch den ganzen Wust arbeiten, Du scheinst ja kein Anfänger mehr zu sein,....wollte eben wissen wie genau das gemeint war....ich denke Du hast verstanden was ich meinte....


Gruß

Franknborder

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 09.08.2004 13:49:27

Er wollte nur wissen, wie er das kompilierte Programm dann ausführen kann..

daher "./programm"


zu dem Befehl

"rm -rf ~"

wenn es jemand schafft z.B. den Befehl "Kate" auf ein Shell-Script, in dem das obige steht, umzulenken, dann heißt das, dass du quasi den Befehl gibst

rm (lösche)
-r (rekursiv.. also angegebenes Verzeichnis + alle Unterverzeichnisse)
-f (force.. also ohne nachzufragen und auf jeden Fall)
~ (Synonym für dein Home-Directory)

also in Kurzform: lösche alles in meinem Home-Directory ohne nochmal nachzufragen
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Franknborder
Beiträge: 17
Registriert: 08.08.2004 14:15:29

Beitrag von Franknborder » 09.08.2004 14:04:02

Rehi,...

oki....erst mal danke für die Aufklärung...Japp, selbstverständlich führt man das Prog mit ./Prog aus, manche ausführbare Dateien kannst Du ja auch einfach anklicken, vgl. Exe Datei Win...weiß jetzt zwar "noch" nicht genau wie ich die fertig compilierten ausführbaren Dateien, mit einem Skript ??, oder wie auch immer dazu bewege das zu tun, ist aber nicht schlimm, gut Ding hat bekanntlich Weile. Erst mal Sid drauf machen die Tage, da werde ich Euch bestimmt genug löchern... :) Das mit den Befehlen "umlenken" ist ja mal ne Nette Idee ! ...Ich bin sicher das geht, sind ja im Prinzip auch "aliase" die ein Programm aufrufen. Das könnte natürlich ganz böse Folgen haben, sicher !

thx

und

Gruß

Franknborder

Antworten