compilieren in C mit gcc

sarastrea

Neues Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
9
Reaktionspunkte
0
Hallo Forum
Ich bin bei einem programmier Praktikum für C an der Uni und habe dort auch schon kleine Programme geschrieben. Diese hab ich mir per E-Mail geschickt und würde sie gerne ausführen, weiß aber nicht wie das geht.
Habs im terminal mit gcc -o aufgabe1-1.c versucht ging aber nicht

freu mich auf die hilfe :)
 
sarastrea schrieb:
Hallo Forum... ging aber nicht

freu mich auf die hilfe :)

waere natuerlich ein hit, wenn du etwas genauer beschreiben wuerdest, was nicht geht ...

btw wuerde ich es mal so versuchen

gcc -o outfile aufgabe1-1.c

weil du musst nach dem -o auch angeben, wie das outfile heissen soll.

hf
Q-Brix
 
sarastrea schrieb:
Hallo Forum
Ich bin bei einem programmier Praktikum für C an der Uni und habe dort auch schon kleine Programme geschrieben. Diese hab ich mir per E-Mail geschickt und würde sie gerne ausführen, weiß aber nicht wie das geht.
Habs im terminal mit gcc -o aufgabe1-1.c versucht ging aber nicht

freu mich auf die hilfe :)
kann ja so auch nicht funzen. Ich geh mal davon aus dass aufgabe1-1.c dein Quelltext ist, dann sollte der Aufruf so aussehen:
gcc aufgabe1-1.c -o hier_den_Namen_des_compilierten_Programms_einsetzen :)
 
habe es jetzt mal so eingegeben:

gcc Loesung1.c -o test
powerpc-apple-darwin8-gcc-4.0.0: Loesung1.c: No such file or directory
powerpc-apple-darwin8-gcc-4.0.0: no input files

irgendwas mach ich falsch :confused:

loesung1.c liegt auf dem Schreibtisch (vielleicht hilft euch das)

tut mir leid aber ich habe echt keine Ahnung
:rolleyes:
 
du musst entweder in dem verzeichnis sein, in dem die source file liegt, wenn du gcc aufrufst oder den pfad zur sourcefile angeben.

vorschlag: du machst dir in deinem home verzeichnis ein directory fuer diese uebung oder was auch immer das ist

du oeffnest ein terminal und wechselst in dieses verzeichnis

und dann gibst du den aufruf nochmal ein


Q-Brix
 
sarastrea schrieb:
gcc Loesung1.c -o test
[...]
loesung1.c liegt auf dem Schreibtisch (vielleicht hilft euch das)

Du mußt schon den richtigen Dateinamen angeben ;-)

Loesung1.c != loesung1.c

Edit: Ach ja, im richtigen Verzeichnis mußt natürlich auch sein.. (falls du das nicht bist)
 
sarastrea schrieb:
loesung1.c liegt auf dem Schreibtisch (vielleicht hilft euch das)
tja, dann musst du auch erst mal auf den Schreibtisch kommen:

cd /Users/dein_User_Kurzname/Desktop

cave: Case Sensitive (kommt auf gross-/ kleinschreibung an)


edit: hier hagelts die Antworten im Minutentakt :)
 
ohja, geht sehr schnell hier :)

aber klappen tuts trotzdem noch nicht, ist aber trotzdem sehr amüsant was rauskommt :D

Haben einen neuen Ordner angelegt, jetzt kommt kein input error mehr, aber dafür kommen bei loesung1.c sehr komische Sachen raus obwohl das eine vom Tutor korrigierte Datei war.

Wie kann man dasw "Ergebnis" beschreiben: sieht einfach nach Kauderwelsch aus

Loesung1.c:36:25: warning: null character(s) ignored
Loesung1.c:36:29: warning: null character(s) preserved in literal
Loesung1.c:36: error: missing terminating ' character
Loesung1.c:37:1: warning: null character(s) ignored
Loesung1.c:37: error: stray '\16' in program


das war nur ein kurzer Ausschnitt, das geht noch ewig lang so weiter.
 
die erste zahl in der fehlermeldung ist die linenumber im source in der sich der fehler befindet.

ich denke du solltest mal deinen quelltext ueberpruefen. (entwicklungsumgebungen koennen hierbei sehr helfen, ein C buch auch...)

Q
 
da hast wohl einige fehler in deinem programmiercode.
wenn du die beseitigst geht es vielleicht.
wenn du bock hast kannst ja mal das prog posten falls es nicht zu lang wird.
 
ja, poste sie doch mal, sieht aber eher nach einem Fehler in der Zeichnkodierung aus - hast du den Quelltext von nem anderen Rechner übertragen??
 
Quelltext:

/**********************************************
* Aufgabe 1, Blatt 1.
*
* Berechnet die Werte der rekursiven
* Folge x_n+1=f(x_n), und bestimmt wie oft
* diese in die Teilintervalle fallen;
**********************************************/
#include <stdio.h>

#define N 50000 //Konstanten im Programmablauf
#define T 200
#define x0 0.2

/* Textgrafik_ausgabe gibt die ersten n Komponenten des Vektors V als Textgrafik aus. Dabei entsprechen 40 * der groessten Komponente */
void Textgrafik_ausgabe( int V[T],int n)
{
int i,j;
int sternzahl,maxkomp=0;

for(i=0;i<n;i=i+1) //Berchnung des Wertes der maximalen Komponente
{
if(V>maxkomp)
{
maxkomp=V;
}
}
for(i=0;i<n;i=i+1)//Textgrafikausgabe durch *-Zeichen
{
printf("%3d :",i); //Ausgabe der Zahl in einem Feld der Laenge mindestens 3
sternzahl=(40*V)/maxkomp;
for(j=0;j<sternzahl;j=j+1)
{
printf("*");
}
printf("\n");
}
printf("* entspricht %d Folgengliedern\n",maxkomp/40);
}


void Werte_rausschreiben(int* V,int n_max)
{
FILE *datei=fopen("werte.dat","w"); //erzeugt die Datei werte.dat zum schreiben im aktuellen Verzeichniss
int i;

for(i=0;i<n_max;i++)
{
fprintf(datei,"%f %d \n",2*(float)i/n_max-1,V); //schreibt die Werte zusammen mit der linken Grenze des Intervalls in die Datei
}
fclose(datei);
return;
}


int main()
{
int i; //Zaehlvariable fuer die Schleife
int j; // Hilfsvariablen fuer die Bestimmung des Teilintervalls
int V[T]; // array zum Speichern der Haufigkeit
double mu; // Die Konstante my aus der Funktion
double x; // Wert des aktuellen Folgenglieds
float eingabe; // Fuer die Eingabe von mu


for( i=0; i<T; i=i+1)
{
V=0; //Initialisierung des Vektors
}

x = x0; //Initialisierung des ersten Folgenglieds

printf("Eingabe von mu:");
scanf("%f",&eingabe); //Einlesen von mu mit Typenkonversion
mu= (double) eingabe;

for (i=0;i<N;i++)
{
j = (int)(((x + 1.0)/2.0)*T); // Bestimme das Intervall in dem x liegt;
if(j==T)
V[T-1]=V[T-1]+1; //Ausnahme falls das Folgenglied den Wert 1.0 hat
else
V[j] = V[j]+1; // Addiere zu diesem Intervall-Zaehler eins dazu;
x = 1.0 - (mu*(x*x)); // Bestimme das naechste Folgenglied
}

// Zuletzt noch die V ausgeben;
Textgrafik_ausgabe(V,T); //als Textgrafik
Werte_rausschreiben(V,T); //in die Datei werte.dat
/* die Werte lassen sich dann mit dem Programm gnuplot wie folgt grafisch darstellen:
1) Nach Ausfuehren des Programms gnuplot mit dem Befehl gnuplot starten
2) bei der Eingabeaufforderung gnuplot> folgendes eingeben:
plot 'werte.dat' with boxes
alternativ auch
plot 'werte.dat' with impulses
oder einfach
plot 'werte.dat'
fuer andere grafische Darstelleng
3) gnuplot mit q beenden.

mehr zu gnuplot kann man unter http://www.gnuplot.info finden
*/

return 0; // Ende;
}
 
ich glaube nach wie vor an einen Fehler in der Zeichnkodierung, wenn ich den Quelltext hier in XCode paste lässt er sich fehlerfrei compilieren :)
 
menno, wieso geht das bei dir und bei mir nicht?? :(

Kann ich das einfach in XCode rein-pasten? Kenne mich bei Xcode leider auch nicht aus (bitte nicht schlagen!) :(
 
hab es die letzten 15s mal ausprobiert, funktioniert doch einwandfrei:
Loki:~ Incoming$ mkdir temp
Loki:~ Incoming$ cd temp
Loki:~/temp Incoming$ vi test.c
Loki:~/temp Incoming$ gcc test.c -o test
Loki:~/temp Incoming$ ls
test test.c
Loki:~/temp Incoming$ chmod 755 test
Loki:~/temp Incoming$ ./test
...


(Im vi: cut&paste)
 
sarastrea schrieb:
menno, wieso geht das bei dir und bei mir nicht?? :(

Kann ich das einfach in XCode rein-pasten? Kenne mich bei Xcode leider auch nicht aus (bitte nicht schlagen!) :(

Ja, einfach reinpasten.

Und vergiß XCode, das ist total oversized für so ne kleine Datei..

mach einfach mit einem Texteditor ne neue Datei, paste es rein und speichers ab. So hab ich das grad gemacht, mit dem vi.
 
versuch doch einfach mal deinen eigenen Quelltext hier aus dem Browser zu kopieren, in einen Texteditor deiner Wahl zu pasten (muss ja nicht gleich vi sein :D ) und das ganze dann als xxx.c abzuspeichern, danach sollte das compilieren funktionieren
 
sarastrea schrieb:
kann man das auch ohne Terminal kompilieren?

Geht auch, aber dann ist das halt viel komplizierter..fang doch einfach an.

Und da du mit Mac OS X anscheinend nicht so vertraut bist, solltest du unbedingt die Nicht-GUI Welt kennenlernen, schließlich ist es ein Unix.
Du hast ja nicht nur für die bunte Oberfläche bezahlt *g*.
 
Zurück
Oben Unten