c-Code wird kompiliert, aber in kubuntu nicht ausgeführt

3

Ich verwende kubuntu 9.10 in VirtualBox, ich schrieb das einfachste "Hallo Welt" -Programm in C, der Code wird kompiliert, ich habe es durch einen Debugger laufen lassen und es scheint gut zu laufen. das einzige Problem ist, dass nichts tatsächlich auf die Konsole gedruckt wird ... irgendwelche Ideen ?

Hier ist der Code:

#include <stdlib.h>
#include <stdio.h>
int main (int argc, char **argv) {
  printf("hello world");
  return 0;
}

Ich kompilierte es mit:

gcc -c test.c -o test.o
gcc test.o -o test

Ich bekomme keine Fehlermeldungen.

yurib
quelle
Welche Befehle verwendest du? und speziell, um es auszuführen?
S.Hoekstra
Bekommen Sie Fehlermeldungen oder wird überhaupt nichts angezeigt?
Diskilla
1
Craigs Antwort ist die richtige. Die Antwort von Hoekstras funktioniert, erklärt aber nicht, warum Sie einen Fehler erhalten haben.
Nifle
Dies scheint zwar eine Stack Overflow-Frage zu sein, aber es geht nicht wirklich um den Code oder das Kompilieren, sondern um die Ausführung (PATH). es sollte auf Super User bleiben.
quack quixote

Antworten:

11

Ihr Pfad hat / usr / bin vor.

Versuchen Sie es als ./test auszuführen

/ usr / bin / test wird einfach ohne Ausgabe beendet

Craig
quelle
+1 Das ist meiner Meinung nach die richtige Antwort. Ich bin selbst von diesem Problem gebissen worden. NOCH NIE rufen Sie Ihren Programmtest an!
Nifle
+1 Da dies die eigentliche Antwort auf die Frage ist, habe ich sie nur zufällig beantwortet.
S.Hoekstra
1
Haben . auf Ihrem Weg ist überhaupt nicht üblich, also ist es nicht wirklich eine Frage, dass es "vorher" ist. Das Aufrufen mit dem Pfad ist jedoch die richtige Lösung.
Ignacio Vazquez-Abrams
1
Es ist darauf hinzuweisen, dass test ist in Bash und vielen anderen Shells eingebaut, so dass es vorher ausgeführt werden würde /usr/bin/test (und test ohne ein Verzeichnis anzugeben oder nicht in PATH oder spät in PATH ).
Dennis Williamson
-1
gcc -o helloWorld test.c

Beim Kompilieren wird ohne Fehler vorgegangen

./helloWorld

Ihr Programm sollte nun angezeigt werden hello world

Das sollte gut funktionieren.

BEARBEITEN
Obwohl dies "funktioniert", verwendet die eigentliche Antwort ./, um die ausführbare Datei im aktuellen Verzeichnis auszuführen. Wo sonst würde es / usr / bin / test laufen. Alle Kredite an Craig :)

S.Hoekstra
quelle
das hat funktioniert! danke :) im sorry, wenn es eine dumme Frage ist, aber warum war es nicht notwendig, die Quelle in diesem Fall zuerst in eine Objektdatei zu kompilieren? Warum verursacht es ein Problem?
yurib
Bitte. In diesem Fall ist es nicht notwendig. Sie können einfachen Code wie diesen direkt in eine ausführbare Datei kompilieren. Objektdateien werden nur in komplexeren Programmen verwendet.
S.Hoekstra
Ich denke nicht, dass das Problem war, wie Sie kompiliert haben, sondern der Name der ausführbaren Datei. Siehe meine Antwort unten.
Craig
Sie haben wahrscheinlich auch recht, aber es ist nicht möglich, eine Objektdatei direkt auszuführen. Das musste zuerst behoben werden.
S.Hoekstra
Er baute eine ausführbare Notiz, die zweite gcc-Zeile - gcc test.o -o test baut test von test.o auf
Craig