ubuntuusers.de

Kompilieren von ANSI-C mit gcc oder Code::blocks

Status: Gelöst | Ubuntu-Version: Kubuntu 10.04 (Lucid Lynx)
Antworten |

mha93

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

Ich nutze seit Gestern Kubuntu (in Virtualbox). Nun versuche ich als angehender Informatiker selbstgeschriebenen Ansi konformen C-Quelltext zu kompilieren. Unter Codeblocks bekomme ich immer die Fehlermeldung "it seemed the Project hasn't been built yet. do you want to build it now?" (ja ich habe vorher auf "build" geklickt) wenn diese Fehllermeldung dreimal mit "Yes" beantwortet wurde zeigt es an "Process terminated with status 127". Wenn ich versuche die sources mit gcc über das Terminal zukompilieren zeigt es (auch mit sudo) an "no such file or directionary". in dolphin ist die datei vorhanden. habe meine eingaben auf tippfehler untersucht aber sie sind korrekt. Mein source code ist auch vollkommen korrekt. unter windows lässt er sich mit code::blocks kompilieren und läuft sogar unter windows 98 besser als ich mir das erhofft hätte.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Ok, mal ein paar Sachen die wir brauchen könnten:

  • Listing der betroffenen Dateien

  • Kommandos die du ausgeührt hast (auf der Konsole)

  • Ausgabe ebendieser

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

befehle wie im oberen teil dieser wikiseite beschrieben.

http://wiki.ubuntuusers.de/GCC

ausgabe stehl in meinem vorherigen beitrag. betroffene Dateien: sort_01.c (selbst geschriebene C-source, die nur ANSI-C enthält. enthaltene header: stdio.h und stlib.h

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Gut, das nächste mal les dir bitte vorher die Foren-Syntax durch, damit kannst du das nämlich deutlich schöner und lesbarer gestalten.

no such file or directory

deutet darauf hin das die Datei nicht existiert (Oh wunder): Bist du dir sicher das du den Befehl im richtigen Verzeichnis ausgeführt hast?

Bei Code::Blocks kann ich dir leider nicht helfen, ich selbst nutze KDevelop mit CMake.

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

Habe die C-sources wie im wiki beschrieben im homeverzeichniss gespeichert. sie ist vorhanden. Im Windows Codeblocks läuft das ganze. und nein ich habe keine Windowsspezifischen einträge gemacht. mit syntax hab ichs nicht so ( ich weiß sollte ich eigentlich, da sie uns das leben vereinfacht...)

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Ok, dann probieren wir doch einfach mal das Beispiel durch: Bitte einfach folgendes einfach mal in ein Teminal per copy&past kopieren (Wir erstellen die HalloLinux.c, kompilieren und führen aus, alles in einem Rutsch):

1
2
3
4
5
6
7
8
9
echo '/* HalloLinux.c */ 
#include <stdio.h> 
int main(void) { 
    printf("Hallo Linux!\n"); 
return 0; 
}' > HalloLinux.c

gcc -o HalloLinux HalloLinux.c
./HalloLinux

Am Ende noch einmal Enter drücken um das Programm auch auszuführen. Dabei sollten keine Probleme auftreten.

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

Das mit dem in einem rutsch sagt garnichts und beim versuch über konsole uu kompilieren erscheint wieder das selbe wie vorher auch.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Bitte poste doch einmal die komplette Konsolenausgabe von der aktion. So im Dunkeln ohne zu wissen was da bei dir passiert mag ich nämlich überhaupt nicht. Um dir zu verdeutlichen was ich meine: Bei mir siehts so aus:

philipp@faramir-linux:~$ echo '/* HalloLinux.c */ 
> #include <stdio.h> 
> int main(void) { 
>     printf("Hallo Linux!\n"); 
> return 0; 
> }' > HalloLinux.c
philipp@faramir-linux:~$ 
philipp@faramir-linux:~$ gcc -o HalloLinux HalloLinux.c

philipp@faramir-linux:~$ ./HalloLinux
Hallo Linux!
philipp@faramir-linux:~$

Bitte benutz für deine Augabe auch Code-Blöcke.

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

ach den text auch inn die konsole... ich idiot habs mit kate versucht. warte...

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{{{
matthias@LinuxPRO:~$ echo '/* HalloLinux.c */ 
> #include <stdio.h> 
> int main(void) { 
>     printf("Hallo Linux!\n"); 
> return 0; 
> }' > HalloLinux.c
matthias@LinuxPRO:~$ 
matthias@LinuxPRO:~$ gcc -o HalloLinux HalloLinux.c
matthias@LinuxPRO:~$ ./HalloLinux
Hallo Linux!
matthias@LinuxPRO:~$ 

}}}

ok das klappt schonmal... probiere das mit dem anderen text jetzt auch

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

output lautet wie folgt:

echo 
matthias@LinuxPRO:~$ #include <stdio.h>
matthias@LinuxPRO:~$ #include <stdlib.h>
matthias@LinuxPRO:~$ int main(void);
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$ int main(void)
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$ {
>    
>     unsigned int uiAnz; 
>     unsigned int uiCount; 
>     unsigned int uiX; 
>     unsigned int uiVerg; 
>     double daTemp[2]; 
>     int iReturn; 
>     do
bash: Syntaxfehler beim unerwarteten Wort `do'
matthias@LinuxPRO:~$     {
>         printf("Geben Sie bitte die Anzahl der zu Sortierenden Zahlen ein und \nbestaetigen sie mit Enter:");
bash: Syntaxfehler beim unerwarteten Wort `"Geben Sie bitte die Anzahl der zu Sortierenden Zahlen ein und \nbestaetigen sie mit Enter:"'
matthias@LinuxPRO:~$         scanf("%d", &uiAnz);
bash: Syntaxfehler beim unerwarteten Wort `"%d",'
matthias@LinuxPRO:~$         double daZahlen[uiAnz]; //
Die Anwendung »double« ist momentan nicht installiert.  Sie können es durch folgende Eingabe installieren:
sudo apt-get install plotutils
bash: //: ist ein Verzeichnis.
matthias@LinuxPRO:~$         for (uiCount=0; uiCount<uiAnz; uiCount=uiCount+1)
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$         {
>             printf("Geben Sie die naechste Zahl ein und bestaetigen sie mit Enter. \nVerwenden Sie bitte einen Punkt als Komma:");
bash: Syntaxfehler beim unerwarteten Wort `"Geben Sie die naechste Zahl ein und bestaetigen sie mit Enter. \nVerwenden Sie bitte einen Punkt als Komma:"'
matthias@LinuxPRO:~$             scanf("%lf", &daZahlen[uiCount]);
bash: Syntaxfehler beim unerwarteten Wort `"%lf",'
matthias@LinuxPRO:~$         }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$         do
bash: Syntaxfehler beim unerwarteten Wort `do'
matthias@LinuxPRO:~$         {
>             uiX=0;
>             for (uiCount=1; uiCount<uiAnz; uiCount=uiCount+1)
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$             {
>                 uiVerg=uiCount-1;
>                 if (daZahlen[uiVerg]<daZahlen[uiCount])
>                 {
>                 }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$                 else
bash: Syntaxfehler beim unerwarteten Wort `else'
matthias@LinuxPRO:~$                 {
>                     daTemp[0]=daZahlen[uiVerg];
>                     daTemp[1]=daZahlen[uiCount];
>                     daZahlen[uiVerg]=daTemp[1];
>                     daZahlen[uiCount]=daTemp[0];
>                     uiX=uiX+1;
>                 }
matthias@LinuxPRO:~$             }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$         }while (uiX>0);
bash: Syntaxfehler beim unerwarteten Wort `uiX'
matthias@LinuxPRO:~$         printf("Sortierte Zahlen in aufsteigender Reihenfolge:\n");
bash: Syntaxfehler beim unerwarteten Wort `"Sortierte Zahlen in aufsteigender Reihenfolge:\n"'
matthias@LinuxPRO:~$         for (uiCount=0; uiCount<uiAnz; uiCount=uiCount+1)
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$         {
>             printf("%lf\n", daZahlen[uiCount]);
bash: Syntaxfehler beim unerwarteten Wort `"%lf\n",'
matthias@LinuxPRO:~$         }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$         printf("Sortierte Zahlen in absteigender Reihenfolge:\n");
bash: Syntaxfehler beim unerwarteten Wort `"Sortierte Zahlen in absteigender Reihenfolge:\n"'
matthias@LinuxPRO:~$         for (uiCount=uiAnz; uiCount>0; uiCount=uiCount-1)
bash: Syntaxfehler beim unerwarteten Wort `('
matthias@LinuxPRO:~$         {
>             printf("%lf\n", daZahlen[uiCount-1]);
bash: Syntaxfehler beim unerwarteten Wort `"%lf\n",'
matthias@LinuxPRO:~$         }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$         printf("Zum Wiederholen druecken Sie bitte \"1\". Zum Beenden druecken Sie eine beliebige\nandere Ziffer.\nBestaetigen sie mit Enter. \n");
bash: Syntaxfehler beim unerwarteten Wort `"Zum Wiederholen druecken Sie bitte \"1\". Zum Beenden druecken Sie eine beliebige\nandere Ziffer.\nBestaetigen sie mit Enter. \n"'
matthias@LinuxPRO:~$         scanf("%d", &iReturn);
bash: Syntaxfehler beim unerwarteten Wort `"%d",'
matthias@LinuxPRO:~$         if (iReturn==1)
>         {
> 
>         }
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$         else
bash: Syntaxfehler beim unerwarteten Wort `else'
matthias@LinuxPRO:~$         {
>             return 0;
>         }
bash: return: can only `return' from a function or sourced script
matthias@LinuxPRO:~$     }while (iReturn==1);
bash: Syntaxfehler beim unerwarteten Wort `iReturn==1'
matthias@LinuxPRO:~$ } >sort_01.c
bash: Syntaxfehler beim unerwarteten Wort `}'
matthias@LinuxPRO:~$ 
matthias@LinuxPRO:~$ gcc -o Sort01 sort_01.c
sort_01.c:1:5: warning: missing terminating ' character
sort_01.c:1: error: missing terminating ' character
In file included from /usr/include/stdio.h:34,
                 from sort_01.c:11:
/usr/lib/gcc/i486-linux-gnu/4.4.3/include/stddef.h:211: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’
In file included from /usr/include/stdio.h:75,
                 from sort_01.c:11:
/usr/include/libio.h:332: error: expected specifier-qualifier-list before ‘size_t’
/usr/include/libio.h:364: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/libio.h:373: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/libio.h:495: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘_IO_sgetn’
In file included from sort_01.c:11:
/usr/include/stdio.h:296: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:302: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:314: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:321: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:363: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:365: error: format string argument not a string type
/usr/include/stdio.h:367: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:639: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:642: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:652: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdio.h:682: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fread’
/usr/include/stdio.h:688: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fwrite’
/usr/include/stdio.h:710: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fread_unlocked’
/usr/include/stdio.h:712: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fwrite_unlocked’
In file included from sort_01.c:12:
/usr/include/stdlib.h:140: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__ctype_get_mb_cur_max’
In file included from sort_01.c:12:
/usr/include/stdlib.h:337: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:367: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:369: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:471: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:473: error: expected ‘)’ before ‘__nmemb’
/usr/include/stdlib.h:485: error: expected declaration specifiers or ‘...’ before ‘size_t’
In file included from /usr/include/stdlib.h:497,
                 from sort_01.c:12:
/usr/include/alloca.h:33: error: expected ‘)’ before ‘__size’
In file included from sort_01.c:12:
/usr/include/stdlib.h:502: error: expected ‘)’ before ‘__size’
/usr/include/stdlib.h:507: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:507: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:751: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:751: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:752: error: nonnull argument with out-of-range operand number (argument 1, operand 5)
/usr/include/stdlib.h:756: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:756: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:757: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
/usr/include/stdlib.h:834: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:837: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:841: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:845: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:854: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:858: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/include/stdlib.h:865: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mbstowcs’
/usr/include/stdlib.h:868: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘wcstombs’
sort_01.c:79: error: expected identifier or ‘(’ before ‘>’ token
matthias@LinuxPRO:~$ ./Sort01
bash: ./Sort01: No such file or directory

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Ähm, das funktioniert leider nicht ganz so wie du dir das vorstellst 😀. Ich empfehle für die Zukunft die Grundlagenartikel im Wiki zur Konsolenbenutzung und Scripting einfach mal zu lesen 😉.

Wechsel jetzt einfach mal bitte mit Dolphin in DAS Verzeichnis in dem du deine Datei gespeichert hast. Dann drückst du F4, das öffnet ein Teminal in Dolphin mit dem richtigen Pfad. Da tippst du dann bitte nochmal die folgenden Befehle ein und gibst die Ausgabe wieder hier ein.

ls -l
gcc -o sort_01 sort_01.c
./sort_01

Wenn das funktioniert haben wir dein Problem darauf zurückgeführt das du auf der Konsole vermutlich den falschen Pfad drin hattest. Dann müssen wir nur noch das Problem mit Code:Blocks lösen.

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

insgesamt 16
-rw-r--r--  1 root     root      170 2010-11-08 14:23 HalloLinux.c
-rw-r--r--  1 root     root      169 2010-11-08 14:23 HalloLinux.c~
drwxr-xr-x 22 matthias matthias 4096 2010-11-08 19:31 matthias
-rw-r--r--  1 root     root     2566 2010-11-07 20:43 sort_01.c
matthias@LinuxPRO:/home$ gcc -o sort_01 sort_01.c
/usr/bin/ld: cannot open output file sort_01: Permission denied
collect2: ld returned 1 exit status
matthias@LinuxPRO:/home$ ./sort_01
bash: ./sort_01: No such file or directory
matthias@LinuxPRO:/home$

wenn kosole laufen würde wäre ich zufrieden.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

Schauen wir uns die Ausgabe doch mal genauer an, die interessanten Teile habe ich mal markiert.

mha93 schrieb:

insgesamt 16
-rw-r--r--  1 root     root      170 2010-11-08 14:23 HalloLinux.c
-rw-r--r--  1 root     root      169 2010-11-08 14:23 HalloLinux.c~
drwxr-xr-x 22 matthias matthias 4096 2010-11-08 19:31 matthias
-rw-r--r--  1 root     root     2566 2010-11-07 20:43 sort_01.c
matthias@LinuxPRO:/home$ gcc -o sort_01 sort_01.c
/usr/bin/ld: cannot open output file sort_01: Permission denied
collect2: ld returned 1 exit status
matthias@LinuxPRO:/home$ ./sort_01
bash: ./sort_01: No such file or directory
matthias@LinuxPRO:/home$

Dreimal darfst du raten was das Problem ist: Die Datei gehört dem Nutzer root, deshalb hast du keinen Zugriff darauf. Kommt warscheinlich durch dein Herumspielen mit sudo. Solange du noch nicht viel Ahnung von Linux hast würde ich empfehlen das sein zu lassen, in jedem Fall aber erstmal den Wikiartikel zu sudo duchzulesen.

Zur Lösung: Hier müssen wir dann doch sudo verwenden, da wir nur dadurch zugriff auf Dateien bekommen, die root besitzt.

sudo chown matthias:matthias sort_01.c

chown ändert den Benutzer von Dateien, und zwar gibt man dabei als Parameter noch nutzer:gruppe dateiname(n) an.

Da du die Dateien zudem nicht in deinem Home-Verzeichnis sondern eins darüber gespeichert hast verschieben wir die Datei erstmal und löschen die beiden nicht mehr benötigten HalloLinux-Dateien.

mv sort_01.c matthias/
sudo rm HalloLinux*

Dann sollten die letzten beiden Befehle aus meinem letzten Post wieder klappen, allerdings vorher bitte in dein Home-Verzeichnis (/home/matthias) wechseln wo sich die entsprechende Datei ja jetzt befindet.

mha93

(Themenstarter)

Anmeldungsdatum:
7. November 2010

Beiträge: 92

Wohnort: ~/

insgesamt 52
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Bilder
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Desktop
drwxr-xr-x 2 matthias matthias 4096 2010-11-07 10:49 Dokumente
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Downloads
-rwxr-xr-x 1 matthias matthias 7144 2010-11-08 19:20 HalloLinux
-rw-r--r-- 1 matthias matthias  102 2010-11-08 19:20 HalloLinux.c
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Musik
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Öffentlich
drwxr-xr-x 4 matthias admin    4096 2010-11-07 08:27 sort_01
-rw-r--r-- 1 matthias matthias 2566 2010-11-07 20:43 sort_01.c
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Videos
drwxr-xr-x 2 matthias matthias 4096 2010-11-06 20:47 Vorlagen
matthias@LinuxPRO:~$ gcc -o sort_01 sort_01.c
/usr/bin/ld: cannot open output file sort_01: Is a directory
collect2: ld returned 1 exit status
matthias@LinuxPRO:~$ ./sort_01
bash: ./sort_01: ist ein Verzeichnis.
matthias@LinuxPRO:~$ 
Antworten |