Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Wie in der Konsole Quelltext kompilieren und ausführen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18

    Wie in der Konsole Quelltext kompilieren und ausführen?

    Hallo

    Habe eine
    Datei main.cpp, welche unter Windows erstellt wurde...
    Wie kompiliere ich diese unter Linux und führe die Datei aus?

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Bitte in die Dokumentation zum GCC gucken. Z.b "info gcc" eingeben oder online unter gcc.gnu.org schauen. Zum Compilieren von C++ Programmen den Compiler am besten als "g++" oder "c++" aufrufen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18
    Das kompilieren hat nun mit einer Warnung geendet, was kann ich unter ihr verstehen?

    Code:
    linux:/home/dennis/Documents/Schule/PRG/Projekt # g++ main.c
    main.c:180:1: warning: no newline at end of file
    linux:/home/dennis/Documents/Schule/PRG/Projekt #

  4. #4
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Das heißt ganz einfach, dass in deiner Quelldatei keine Leerzeile am Ende ist.

    Bevor du jetzt fragst, warum der Compiler das will suche erst mal im Forum. Denn diese Frage wurde vor einiger Zeit diskutiert.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18
    Naja, dann füge ich diese einfach aus :-P
    Wie kann ich die kompilierte Datei denn nun ausführen?
    Find mich in den FAQ's irgendwie nicht zurecht

    Edit:

    Trotz Leerzeilen kommt diese Meldung...
    Hier der Quelltext:
    Code:
    /*Projekt 2004/2005
    DnS GmbH
    Daniels / Schwarz
    Kontaktmanager Deluxe 2005
    Beta v0.1
    Releasetermin: 1. Quartal 2005*/
    
    #include <stdio.h>
    //#include <conio.h>
    //#include <process.h>
    #include <string.h>
    
    
    
    int eingabe,eingabe2,x=0;
    FILE *Datei;
    FILE *laden;
    char weiter='j',Menue=0;
    
    
    int Version ()
    
    {
    	printf("Kontaktmanager Deluxe 2005\n");
    	printf("Version Beta 0.1\n");
    	printf("DnS GmbH\n");
    	printf("Bitte Taste druecken...");
    	//getch();
    	return 0;
    }
    
    
    
    int menu ()
    
    {
    	printf("\ec");
    	printf("(1) Kontakte anzeigen\n");
    	printf("(2) Kontakte hinzufuegen\n");
    	printf("(3) Terminplaner starten *under construction*\n");
    	printf("(4) Kontakte loeschen\n");
    	scanf("%d",&eingabe);
    	return 0;
    }
    
    int Terminplaner ()
    
    {
    	printf("\ec");
    	printf("(1) Kalendar anzeigen\n");
    	printf("(2) Termine hinzufuegen\n");
    	scanf("%d",&eingabe2);
    	return 0;
    }
    
    int main ()
    
    
    {
    	
    	struct KONTAKT
    	{
    		char nachname	[20];
    		char Vorname	[20];
    		char Strasse	[20];
    		char Hausnummer [4];
    		char Ort		[20];
    		char PLZ		[5];
    		char ICQ		[10];
    		char E_Mail		[30];    
    		char Telefon	[20];
    	};
    	
    	KONTAKT kontakt[30],test[30];
    	
    	Version();
    	do
    	{
    		menu();
    		
    		switch (eingabe)
    		{
    		case 1:		
    			unsigned long bytes;
    			
    			x=0;
    			Datei =fopen("Kontakte.txt","r");
    			if (!Datei)
    				break;
    			
    			while (weiter=='j')
    			{
    				
    				bytes = fread(&test[x], sizeof(KONTAKT), 1, Datei);
    				if (bytes > 0)
    				{
    					printf("Kontakt Nr. %d\n",x+1);
    					printf("Vorname: ");
    					printf("%s\n",test[x].Vorname);
    					printf("Nachname: ");
    					printf("%s\n",test[x].nachname);
    					printf("Strasse: ");
    					printf("%s\n",test[x].Strasse);
    					printf("Hausnummer: ");
    					printf("%s\n",test[x].Hausnummer);
    					printf("PLZ: ");
    					printf("%s\n",test[x].PLZ);
    					printf("Ort: ");
    					printf("%s\n",test[x].Ort);
    					printf("Telefon: ");
    					printf("%s\n",test[x].Telefon);
    					printf("E-Mail: ");
    					printf("%s\n",test[x].E_Mail);
    					printf("Weiter?(j/n)");
    					scanf("%s",&weiter);
    					x++;
    				}
    				else
    				{
    					printf("\n\nEnde der Datei :-(\n");
    					break;
    				}
    			}
    			
    			fclose(Datei);
    			
    			break;
    			
    		case 2:	
    			
    			
    			
    			
    			
    			do
    			{
    				
    				Datei = fopen("Kontakte.txt","a+");
    				printf("Kontakt Nr. %d\n",x+1);
    				printf("Nachname: ");
    				scanf("%s",&kontakt[x].nachname);
    				printf("\nVorname: ");
    				scanf("%s",&kontakt[x].Vorname);
    				printf("\nStrasse: ");
    				scanf("%s",&kontakt[x].Strasse);
    				printf("\nHausnummer: ");
    				scanf("%s",&kontakt[x].Hausnummer);
    				printf("\nPLZ: ");
    				scanf("%s",&kontakt[x].PLZ);
    				printf("\nOrt: ");
    				scanf("%s",&kontakt[x].Ort);
    				printf("\nTelefon: ");
    				scanf("%s",&kontakt[x].Telefon);
    				printf("\nE-Mail: ");
    				scanf("%s",&kontakt[x].E_Mail);
    				fwrite(&kontakt[x],sizeof(KONTAKT),1,Datei);
    				fclose(Datei);
    				printf("Weitere Kontakte hinzufuegen?(j/n)");
    				scanf("%s",&weiter);
    				x++;
    				
    			}
    			while (weiter=='j');break;
    			
    			
    		case 3: Terminplaner();break;
    		case 4: remove("Kontakte.txt");break;
    		
    		}
    		
    		printf("0 = Hautpmenue\n");
    		printf("1 = Beenden\n");
    		fflush(stdin);
    		scanf("%uc",&Menue);
    	}
    	while (Menue==0);
    	return 0;
    	
    	}
    Geändert von Hannibal19xx (13-01-2005 um 15:47 Uhr)

  6. #6
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    In deinem Fall mit dem Befehl ./a.out

    kompilierst du mit g++ main.cpp -o progname dann führst du mit ./progname aus.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Also das Programm compiliert bei mir ohne Fehler.

    PS: Wenn ich mir dein Quellcode so ansehe frage ich mich, ob du wirklich C++ programmieren willst/wolltest?

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18
    Naja, ist eben ein Projekt aus der Schule...soll wohl c sein^^

    THX, geht jetzt
    Geändert von Hannibal19xx (13-01-2005 um 16:33 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Zitat Zitat von Hannibal19xx
    Naja, ist eben ein Projekt aus der Schule...soll wohl c sein^^

    THX, geht jetzt
    wobei es auch kein sauberes C ist...
    Kannst ja mal versuchen ihn mit dem gcc zu kompilieren, da brauchst du aber 2-3 kleine Änderungen am Quellcode damit es funktioniert.
    Aber dann ist es wenigstens sauberes C, als C++ kann man das ja kaum verkaufen.

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  10. #10
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18
    Wir proggen auch c, von daher passt das...hauptsache die note stimmt nachher
    Nur das Auslesen aus der Textdatei klappt nicht, ne Ahnung wieso?

  11. #11
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Zitat Zitat von Hannibal19xx
    Wir proggen auch c, von daher passt das...hauptsache die note stimmt nachher
    Ach das soll C sein. Dann kompiliere es mal mit einem c compiler (das wird wahrscheinlich auch dein Lehrer machen) Du hast da nämlich ein paar Fehler drin, wenn es wirklich C sein soll.

    PS: und die Dateien sollten dann auch .c heißen.

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  12. #12
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Wenn das von nem Windows kommt evtl. mal ein dos2unix oder Äquivalentes drüber laufen lassen, damit die Windows Newline in Unix Newlines umgewandelt werden. C Kompiler sind da zwar im Grossen und Ganzen recht robust aber vielleicht bekommste dann die Warnung wegen der fehlenden Leer-Zeile am Ende weg...
    chmod -R +t /*

  13. #13
    Registrierter Benutzer
    Registriert seit
    15.12.2004
    Beiträge
    18
    Gibt es nicht die Möglichkeit eine Windows-Umgebung zu simulieren, damit ich nicht alles ändern muss, und das dann wieder nicht unter win richtig läuft?

  14. #14
    Registrierter Benutzer
    Registriert seit
    17.04.2002
    Beiträge
    185
    Wenn du Standard ANSI-C programmierst, dann laufen deine Programme überall und das ist auch das was du machen solltest.
    Momentan hast du ein C Programm mit ein paar kleinen syntax Änderungen die es in der Form nur in C++ gibt, weswegen dein Programm mit einem C++ kompilier übersetzt wird mit einem C kompiler aber nicht.
    Es sind nur 2-3 kleine änderungen die du in einer Minute gemacht hast (mußt dich eigentlich nur an die Fehlermeldungen halten).

    1. vor KONTAKT muß immer ein struct stehen.
    2. du mußt die Blöcke in case klammern ({})

    For a world where freedom and knowledge survives the compiler! (https://www.fsfe.org)

    If art interprets our dreams, the computer executes them in the guise of programs!

  15. #15
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Zitat Zitat von BeS
    Wenn du Standard ANSI-C programmierst, dann laufen deine Programme überall und das ist auch das was du machen solltest.
    Das stimmt nicht; ein Programm für Mikrocontroller A wird zu 99,9 % nicht auf B laufen, auch wenn er dafür fehlerfrei compiliert wurde. Es liegt beispielsweise an der Endianess.
    Es ist auch normal, dass wenn man nur für Mikrocontroller A programmiert das Programm nicht mehr richtig funktioniert, wenn man statt Compiler X den Compiler Y verwendet. ANSI-C läßt ziemlich viele Freiheiten und bei Details, beispielsweise ob eine Funktion reentrant ist oder nicht, häufig mehrdeutig.
    Man kann Code schreiben, der sowohl mit X als auch Y richtig funktioniert, aber das machen 99,9 % der Programmierer nicht; statt int16_t schreiben die int, was natürlich nicht portabel ist, denn int kann 8, 16, 24, 32 oder 64 Bit (oder noch andere Werte) haben.

    Leider benutzen die meisten nicht einmal einen Prettyprinter wie z. B. indent, so dass schon die Formattierung des Quelltextes fehlerhaft bzw. chaotisch ist und das trägt nicht zur Fehlerreduktion bei.
    Geändert von nobody0 (14-01-2005 um 16:40 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •