PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compilierte Proggies führen zu absturz



23.02.00, 15:24
Ich hab ein paar sachen mit c geschrieben. Nach dem Compilieren ohne fehlermeldungen oder wahrnungen hab ich sie dann ausgeführt und ohne irgendwelche weiteren umschweife hat sich mir das login dings vom anfang presentiert. Also, zusammengefasst, nachdem ich ein mit gcc compliliertes programm ausführe fordert mich linux zum neuanmelden auf. Ich habe eine Red Hat distribution.
Kann mir jemand helfen. Ich bin echt gefrustet!

Hagen von Tronje
23.02.00, 22:39
Hi,

wer weiss, vielleicht hast Du ein login programmiert??
http://www.linuxforen.de/ubb/biggrin.gif

Ohne genaueren Angaben(sourcecode) kann Dir
wohl niemand so schnell helfen.

Hagen

24.02.00, 12:35
Was ich programmiere ist wurst ich hab verschiedene sachen ausprobiert.
Selbst:

#include <stdio>
#include <stdlib>

int main()
{
printf("hello world");
sleep(3000);
return 0;
}

führt zu einem neuen login.
Auch bei c++ sachen tritt dieses problem auf. Java hab ich noch nicht getestet.
Kann es sein das das der Compiler irgendwelchen schmarn probiert oder ich was beim aufrufen der programme falsch mache.
ich compiliere etwa so:
gcc hello.c
muß ich da irgendwelche opionen angeben?
Wenn ich die sache aus der KDE aufrufe passiert in der konsole garüberhauptnüscht.



------------------

kabalak
24.02.00, 21:06
Abgesehen davon , daß bei dieser Art un-objektorientiert zu schreiben ( nixKlasse ) ,
solltest du mit :
gcc -o ERGEBNIS DIE_SOURCEN ETWAIGE_BIBLIOTHEKEN
kompilieren .
Welche Distributionsversion verwendest du denn ?

Hagen von Tronje
24.02.00, 22:57
Hi,

lustige Sachen http://www.linuxforen.de/ubb/smile.gif

Ok,

a) Wie Du vielleicht schon bemerkt hast, ist dies ein
html-forum, und jehne haben die Angewohnheit, spitzige
Klammer zu 'unterschlagen':
Abhilfe
& l t ; ohne die Zwischenraeume wird daraus &lt;

b) Wenn Du code postest, bitte den code-tag verwenden
-> schau unter der Hilfe nach.

Dann sieht Dein Code naemlich so aus:


#include &lt;stdio&gt;
#include &lt;stdlib&gt;

int main()
{
printf("hello world");
sleep(3000);

return 0;
}

Schon besser, gell? http://www.linuxforen.de/ubb/wink.gif

c) stdio ist C++-Speak, unter C heisst das
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

d) So, nun ist auch noch der falsche Header, denn
sleep() finden wir unter &lt;unistd.h&gt, ist also
POSIX und nicht ANSI C;

e) 3000 Sekunden ( 50 Minuten) warten ist nicht
unbedingt geschickt http://www.linuxforen.de/ubb/wink.gif

Somit haetten wir


#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;

int main(void)
{
printf("hello world\n");
sleep(10);

return 0;
}


gcc hello.c
war schon richtig, mehr ist fuer dieses
einfache Programm nicht noetig.

> Wenn ich die sache aus der KDE aufrufe
'aus der KDE'?
Mmh, Du meinst, Du laesst KDE laufen und hast dabei ein
Terminalfenster geoeffnet.
> passiert in der konsole garüberhauptnüscht.
Wie sollte es auch? Du hast ja 50 Minuten sleep verordnet
und dazu kein '\n';
mit meiner Version erscheint naemlich das 'hello world'
und schlaeft _dann_ 10 sec !

Aber natuerlich darf dabei keine Login kommen,
wie kabalak schon schrieb, welche Distribution
hast Du ? Welchen compiler?
Tip: Compilier mal mit
gcc -v hello.c
und poste dann die Meldungen des Compilers.

Hagen

PS
> Nach dem Compilieren ohne fehlermeldungen
Jaja, die muss mensch erst noch einschalten:
gcc -Wall -ansi -pedantic
und dann waere Dein obiges Proggie so:
b.c: In function `main':
b.c:7: warning: implicit declaration of function `sleep'

PPS
> Abgesehen davon , daß bei dieser Art un-objektorientiert zu schreiben ( nixKlasse ) ,
Hallo, er hat gesagt 'C' !
Und obiges ist ein C-Programm (mit falschen headern) !!
Und bei C++ compiliert mensch mit
g++ abc.cpp
!

25.02.00, 15:42
Hallo, na ja, OK.
Also ich programmiere eher mit c++ und java und bin die c schreibweise noch nicht so gewöhnt. Ich hatte bisher nichts damit zu tun da ich auch erst Linux einsteiger bin. Auf jeden fall war das auch kein programm das ich so geschrieben habe mehr ein hinweis dafür das es nicht läuft egal welches programm ich schreibe. Aber gut wenn ich die fehlermeldungen anschalte und dann vielleicht noch die richtigen header benutze könnte es vielleicht sein das es funktioniert. AUf jeden fall vielen dank und tschuldigung das ich zu faul war weiterzuprobieren und vielleicht mal die richtige schreibweise zu checken.


------------------